You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ro...@apache.org on 2021/11/18 08:12:15 UTC

[cloudstack] branch main updated: Replace string libraries with org.apache.commons.lang3.StringUtils (#5386)

This is an automated email from the ASF dual-hosted git repository.

rohit pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/main by this push:
     new b4aabad  Replace string libraries with org.apache.commons.lang3.StringUtils (#5386)
b4aabad is described below

commit b4aabadc4d24ca914f0ede8dc260f6132bdc3baf
Author: Daniel Augusto Veronezi Salvador <38...@users.noreply.github.com>
AuthorDate: Thu Nov 18 05:11:48 2021 -0300

    Replace string libraries with org.apache.commons.lang3.StringUtils (#5386)
    
    * Replace google lib for lang3 and adjust methods calls
    
    * Replace string libs by lang3
    
    * Prohibit others string libs
    
    Co-authored-by: GutoVeronezi <da...@scclouds.com.br>
---
 agent/src/main/java/com/cloud/agent/Agent.java     |   9 +-
 .../src/main/java/com/cloud/agent/AgentShell.java  |   6 +-
 .../download/DirectTemplateDownloaderImpl.java     |   2 +-
 .../download/MetalinkDirectTemplateDownloader.java |   2 +-
 .../com/cloud/agent/api/storage/OVFHelper.java     |   8 +-
 api/src/main/java/com/cloud/network/Network.java   |   2 +-
 .../java/com/cloud/network/PhysicalNetwork.java    |   2 +-
 .../java/org/apache/cloudstack/acl/RoleType.java   |   5 +-
 .../main/java/org/apache/cloudstack/acl/Rule.java  |   7 +-
 .../org/apache/cloudstack/api/ApiArgValidator.java |   2 +-
 .../command/admin/account/CreateAccountCmd.java    |   2 +-
 .../command/admin/acl/BaseRolePermissionCmd.java   |   4 +-
 .../api/command/admin/acl/ImportRoleCmd.java       |   9 +-
 .../api/command/admin/acl/ListRolesCmd.java        |   3 +-
 .../cloudstack/api/command/admin/acl/RoleCmd.java  |   5 +-
 .../admin/annotation/ListAnnotationsCmd.java       |   4 +-
 .../api/command/admin/ca/IssueCertificateCmd.java  |   6 +-
 .../api/command/admin/ca/RevokeCertificateCmd.java |   4 +-
 .../api/command/admin/config/UpdateCfgCmd.java     |   4 +-
 .../admin/network/UpdateNetworkOfferingCmd.java    |   6 +-
 .../admin/offering/CreateServiceOfferingCmd.java   |   8 +-
 .../admin/offering/UpdateDiskOfferingCmd.java      |   6 +-
 .../admin/offering/UpdateServiceOfferingCmd.java   |   7 +-
 .../ChangeOutOfBandManagementPasswordCmd.java      |   4 +-
 .../ConfigureOutOfBandManagementCmd.java           |  28 +++---
 .../api/command/admin/user/CreateUserCmd.java      |   2 +-
 .../admin/vm/ImportUnmanagedInstanceCmd.java       |  14 +--
 .../command/admin/vpc/UpdateVPCOfferingCmd.java    |   6 +-
 .../user/account/AddAccountToProjectCmd.java       |   4 +-
 .../command/user/account/AddUserToProjectCmd.java  |   4 +-
 .../loadbalancer/AssignToLoadBalancerRuleCmd.java  |   2 +-
 .../RemoveFromLoadBalancerRuleCmd.java             |   2 +-
 .../command/user/network/CreateNetworkACLCmd.java  |   2 +-
 .../api/command/user/network/ListNetworksCmd.java  |   4 +-
 .../api/command/user/project/UpdateProjectCmd.java |   4 +-
 .../ha/gslb/AssignToGlobalLoadBalancerRuleCmd.java |   2 +-
 .../gslb/RemoveFromGlobalLoadBalancerRuleCmd.java  |   2 +-
 .../user/resource/ListDetailOptionsCmd.java        |   4 +-
 .../AuthorizeSecurityGroupEgressCmd.java           |   2 +-
 .../AuthorizeSecurityGroupIngressCmd.java          |   2 +-
 .../api/command/user/vm/DeployVMCmd.java           |   5 +-
 .../api/response/OutOfBandManagementResponse.java  |   4 +-
 .../java/org/apache/cloudstack/backup/Backup.java  |   2 +-
 .../java/org/apache/cloudstack/ServerDaemon.java   |   6 +-
 .../virtualnetwork/VirtualRoutingResource.java     |   2 +-
 .../java/com/cloud/agent/transport/Request.java    |   5 +-
 .../com/cloud/storage/template/OVAProcessor.java   |   2 +-
 .../storage/template/S3TemplateDownloader.java     |   5 +-
 .../apache/cloudstack/ca/SetupKeystoreAnswer.java  |   4 +-
 .../cloudstack/diagnostics/DiagnosticsAnswer.java  |   4 +-
 .../com/cloud/agent/manager/AgentManagerImpl.java  |   6 +-
 .../com/cloud/vm/VirtualMachineManagerImpl.java    |   5 +-
 .../engine/orchestration/NetworkOrchestrator.java  |  33 ++++---
 .../engine/orchestration/VolumeOrchestrator.java   |   2 +-
 .../src/main/java/com/cloud/host/HostVO.java       |   2 +-
 .../cloud/storage/dao/VMTemplatePoolDaoImpl.java   |   2 +-
 .../com/cloud/upgrade/DatabaseUpgradeChecker.java  |   2 +-
 .../cloud/usage/dao/UsageVMSnapshotDaoImpl.java    |   2 +-
 .../usage/dao/UsageVMSnapshotOnPrimaryDaoImpl.java |   2 +-
 .../main/java/com/cloud/user/UserAccountVO.java    |   4 +-
 .../src/main/java/com/cloud/user/UserVO.java       |   4 +-
 .../java/com/cloud/user/dao/AccountDaoImpl.java    |   4 +-
 .../src/main/java/com/cloud/vm/VMInstanceVO.java   |   4 +-
 .../com/cloud/vm/dao/NicSecondaryIpDaoImpl.java    |   2 +-
 .../cloudstack/acl/dao/ProjectRoleDaoImpl.java     |   4 +-
 .../annotation/dao/AnnotationDaoImpl.java          |   5 +-
 .../storage/configdrive/ConfigDriveBuilder.java    |   2 +-
 .../configdrive/ConfigDriveBuilderTest.java        |   2 +-
 .../storage/motion/DataMotionServiceImpl.java      |   2 +-
 .../KvmNonManagedStorageDataMotionStrategy.java    |   2 +-
 .../motion/StorageSystemDataMotionStrategy.java    |  14 +--
 .../storage/image/TemplateDataFactoryImpl.java     |   2 +-
 .../storage/image/TemplateServiceImpl.java         |   9 +-
 .../storage/image/store/TemplateObject.java        |   6 +-
 .../image/deployasis/DeployAsIsHelperImpl.java     |   4 +-
 .../datastore/provider/DefaultHostListener.java    |   2 +-
 .../cloudstack/storage/volume/VolumeObject.java    |   2 +-
 .../storage/volume/VolumeServiceImpl.java          |   4 +-
 .../java/com/cloud/utils/db/GenericDaoBase.java    |   4 +-
 .../quota/dao/QuotaEmailTemplatesDaoImpl.java      |   4 +-
 .../security/keystore/KeystoreManagerImpl.java     |   5 +-
 .../lifecycle/registry/ExtensionRegistry.java      |   2 +-
 .../acl/DynamicRoleBasedAPIAccessChecker.java      |   4 +-
 .../discovery/ApiDiscoveryServiceImpl.java         |   4 +-
 .../cloudstack/discovery/ApiDiscoveryTest.java     |   2 +-
 .../cloudstack/backup/veeam/VeeamClient.java       |   5 +-
 .../ca/provider/RootCACustomTrustManager.java      |  12 +--
 .../cloudstack/ca/provider/RootCAProvider.java     |   8 +-
 .../BaremetalKickStartPxeResource.java             |   2 +-
 .../networkservice/BaremetalPingPxeResource.java   |   3 +-
 .../Force10BaremetalSwitchBackend.java             |   2 +-
 .../resource/HypervDirectConnectResource.java      |   4 +-
 .../cloud/hypervisor/kvm/dpdk/DpdkDriverImpl.java  |   2 +-
 .../hypervisor/kvm/resource/BridgeVifDriver.java   |   5 +-
 .../hypervisor/kvm/resource/IvsVifDriver.java      |   2 +-
 .../kvm/resource/LibvirtComputingResource.java     |  32 ++++---
 .../kvm/resource/LibvirtDomainXMLParser.java       |  12 ++-
 .../kvm/resource/LibvirtStoragePoolXMLParser.java  |   2 +-
 .../hypervisor/kvm/resource/LibvirtVMDef.java      |   2 +-
 .../hypervisor/kvm/resource/OvsVifDriver.java      |   4 +-
 .../RollingMaintenanceAgentExecutor.java           |   4 +-
 .../RollingMaintenanceExecutorBase.java            |   2 +-
 .../RollingMaintenanceServiceExecutor.java         |   2 +-
 .../wrapper/LibvirtMigrateCommandWrapper.java      |   7 +-
 ...virtRevokeDirectDownloadCertificateWrapper.java |   5 +-
 ...tupDirectDownloadCertificateCommandWrapper.java |   5 +-
 .../kvm/storage/IscsiAdmStorageAdaptor.java        |   4 +-
 .../kvm/storage/KVMStorageProcessor.java           |   4 +-
 .../kvm/storage/ScaleIOStorageAdaptor.java         |  18 ++--
 .../org/apache/cloudstack/utils/qemu/QemuImg.java  |   2 +-
 .../java/com/cloud/hypervisor/guru/VMwareGuru.java |   2 +-
 .../vmware/manager/VmwareManagerImpl.java          |  13 ++-
 .../vmware/manager/VmwareStorageManagerImpl.java   |   4 +-
 .../hypervisor/vmware/resource/VmwareResource.java |  25 +++---
 .../storage/resource/VmwareStorageProcessor.java   |   9 +-
 .../java/com/cloud/hypervisor/XenServerGuru.java   |   2 +-
 .../xenserver/resource/CitrixResourceBase.java     |  22 ++---
 .../resource/Xenserver625StorageProcessor.java     |   2 +-
 .../wrapper/xenbase/XenServerUtilitiesHelper.java  |   4 +-
 .../motion/XenServerStorageMotionStrategy.java     |   2 +-
 .../com/cloud/hypervisor/XenServerGuruTest.java    |   2 +-
 .../resource/Xenserver625StorageProcessorTest.java |   2 +-
 .../cloudian/api/CloudianSsoLoginCmd.java          |   4 +-
 .../cloudstack/cloudian/client/CloudianClient.java |  12 +--
 .../cloudstack/cloudian/client/CloudianUtils.java  |   6 +-
 .../cluster/KubernetesClusterManagerImpl.java      |  51 +++++------
 .../KubernetesClusterActionWorker.java             |   7 +-
 ...ernetesClusterResourceModifierActionWorker.java |  13 ++-
 .../KubernetesClusterScaleWorker.java              |   6 +-
 .../KubernetesClusterStartWorker.java              |  35 ++++----
 .../KubernetesClusterUpgradeWorker.java            |   6 +-
 .../cluster/utils/KubernetesClusterUtil.java       |  12 +--
 .../version/KubernetesVersionManagerImpl.java      |  14 +--
 .../version/AddKubernetesSupportedVersionCmd.java  |   4 +-
 .../ListKubernetesSupportedVersionsCmd.java        |   4 +-
 .../cloudstack/metrics/PrometheusExporterImpl.java |  10 +--
 .../cloudstack/response/VolumeMetricsResponse.java |   4 +-
 .../cloud/network/bigswitch/BigSwitchBcfApi.java   |   2 +-
 .../cloud/network/bigswitch/BigSwitchBcfUtils.java |   2 +-
 .../network/guru/BigSwitchBcfGuestNetworkGuru.java |   2 +-
 .../contrail/management/ContrailManagerImpl.java   |   2 +-
 .../contrail/management/ServerDBSyncImpl.java      |   2 +-
 .../network/contrail/model/NetworkPolicyModel.java |   2 +-
 .../contrail/model/ServiceInstanceModel.java       |   2 +-
 .../contrail/model/VirtualMachineModel.java        |   2 +-
 .../resource/NetScalerControlCenterResource.java   |   4 +-
 .../IpmitoolOutOfBandManagementDriver.java         |   5 +-
 .../driver/ipmitool/IpmitoolWrapper.java           |   5 +-
 .../NestedCloudStackOutOfBandManagementDriver.java |   6 +-
 .../CloudStackImageStoreLifeCycleImpl.java         |   2 +-
 .../driver/DateraPrimaryDataStoreDriver.java       |   6 +-
 .../storage/datastore/util/DateraObject.java       |   3 +-
 .../storage/datastore/util/DateraUtil.java         |   2 +-
 .../datastore/api/StoragePoolStatistics.java       |  10 +--
 .../datastore/client/ScaleIOGatewayClientImpl.java | 100 ++++++++++-----------
 .../driver/ScaleIOPrimaryDataStoreDriver.java      |   6 +-
 .../storage/datastore/util/ScaleIOUtil.java        |   6 +-
 .../driver/SolidFirePrimaryDataStoreDriver.java    |   2 +-
 .../storage/datastore/util/SolidFireUtil.java      |   2 +-
 .../cloudstack/api/command/LdapImportUsersCmd.java |   2 +-
 .../cloudstack/ldap/ADLdapUserManagerImpl.java     |   2 +-
 .../apache/cloudstack/ldap/LdapAuthenticator.java  |   4 +-
 .../cloudstack/ldap/OpenLdapUserManagerImpl.java   |   2 +-
 .../cloud/server/auth/MD5UserAuthenticator.java    |   4 +-
 .../server/auth/PBKDF2UserAuthenticator.java       |   4 +-
 .../server/auth/PlainTextUserAuthenticator.java    |   4 +-
 .../api/command/SAML2LoginAPIAuthenticatorCmd.java |   2 +-
 .../server/auth/SHA256SaltedUserAuthenticator.java |   4 +-
 server/src/main/java/com/cloud/api/ApiDBUtils.java |   2 +-
 .../main/java/com/cloud/api/ApiResponseHelper.java |   5 +-
 .../com/cloud/api/dispatch/ParamProcessWorker.java |  12 ++-
 .../java/com/cloud/api/query/QueryManagerImpl.java |  19 ++--
 .../com/cloud/api/query/dao/HostJoinDaoImpl.java   |   4 +-
 .../java/com/cloud/api/query/vo/HostJoinVO.java    |   2 +-
 .../configuration/ConfigurationManagerImpl.java    |  59 ++++++------
 .../deploy/DeploymentPlanningManagerImpl.java      |   2 +-
 .../cloud/hypervisor/kvm/dpdk/DpdkHelperImpl.java  |   2 +-
 .../java/com/cloud/network/NetworkModelImpl.java   |   6 +-
 .../java/com/cloud/network/NetworkServiceImpl.java |  55 ++++++------
 .../router/VirtualNetworkApplianceManagerImpl.java |   2 +-
 .../cloud/network/router/VpcNetworkHelperImpl.java |   2 +-
 .../network/security/SecurityGroupManagerImpl.java |   2 +-
 .../cloud/network/vpc/NetworkACLServiceImpl.java   |   4 +-
 .../java/com/cloud/network/vpc/VpcManagerImpl.java |   3 +-
 .../com/cloud/resource/ResourceManagerImpl.java    |  21 +++--
 .../com/cloud/server/ConfigurationServerImpl.java  |   2 +-
 .../main/java/com/cloud/server/StatsCollector.java |   6 +-
 .../com/cloud/servlet/ConsoleProxyServlet.java     |   2 +-
 .../java/com/cloud/storage/StorageManagerImpl.java |  12 +--
 .../com/cloud/storage/VolumeApiServiceImpl.java    |  21 +++--
 .../com/cloud/tags/ResourceManagerUtilImpl.java    |   2 +-
 .../src/main/java/com/cloud/test/TestAppender.java |   5 +-
 .../java/com/cloud/user/DomainManagerImpl.java     |   4 +-
 .../main/java/com/cloud/vm/UserVmManagerImpl.java  |   2 +-
 .../cloudstack/acl/ProjectRoleManagerImpl.java     |   5 +-
 .../org/apache/cloudstack/acl/RoleManagerImpl.java |  11 ++-
 .../agent/lb/IndirectAgentLBServiceImpl.java       |   4 +-
 .../annotation/AnnotationManagerImpl.java          |  19 ++--
 .../cloudstack/backup/BackupManagerImpl.java       |   6 +-
 .../org/apache/cloudstack/ca/CAManagerImpl.java    |  14 +--
 .../diagnostics/DiagnosticsServiceImpl.java        |   9 +-
 .../org/apache/cloudstack/ha/HAManagerImpl.java    |  12 +--
 .../cloudstack/network/ssl/CertServiceImpl.java    |   8 +-
 .../OutOfBandManagementServiceImpl.java            |  16 ++--
 .../cloudstack/vm/UnmanagedVMsManagerImpl.java     |  55 ++++++------
 .../network/vpc/NetworkACLServiceImplTest.java     |   2 +-
 .../java/com/cloud/consoleproxy/ConsoleProxy.java  |   2 +-
 .../consoleproxy/ConsoleProxyNoVncClient.java      |   2 +-
 .../SecondaryStorageManagerImpl.java               |   6 +-
 .../storage/resource/HttpUploadServerHandler.java  |   2 +-
 .../resource/NfsSecondaryStorageResource.java      |  14 ++-
 .../storage/template/DownloadManagerImpl.java      |   4 +-
 .../checkstyle/src/main/resources/cloud-style.xml  |   4 +
 .../cloud/usage/parser/VMInstanceUsageParser.java  |   2 +-
 .../src/main/java/com/cloud/utils/StringUtils.java |  40 +--------
 utils/src/main/java/com/cloud/utils/SwiftUtil.java |   2 +-
 utils/src/main/java/com/cloud/utils/UriUtils.java  |   8 +-
 .../cloud/utils/log/CglibThrowableRenderer.java    |   2 +-
 .../main/java/com/cloud/utils/net/NetUtils.java    |   4 +-
 .../cloud/utils/security/CertificateHelper.java    |  14 +--
 .../java/com/cloud/utils/ssh/SSHCmdHelper.java     |   4 +-
 .../main/java/com/cloud/utils/ssh/SshHelper.java   |   2 +-
 .../java/com/cloud/utils/storage/S3/S3Utils.java   |   5 +-
 .../apache/cloudstack/utils/CloudStackVersion.java |   8 +-
 .../utils/imagestore/ImageStoreUtil.java           |   2 +-
 .../cloudstack/utils/process/ProcessRunner.java    |   3 +-
 .../cloudstack/utils/redfish/RedfishClient.java    |   2 +-
 .../cloudstack/utils/security/CertUtils.java       |   6 +-
 .../cloudstack/utils/security/ChecksumValue.java   |   2 +-
 .../cloudstack/utils/security/DigestHelper.java    |   2 +-
 .../utils/volume/VirtualMachineDiskInfo.java       |   2 +-
 .../test/java/com/cloud/utils/StringUtilsTest.java |   6 --
 .../utils/log/CglibThrowableRendererTest.java      |   2 +-
 .../cloudstack/utils/process/ProcessTest.java      |   4 +-
 .../com/cloud/hypervisor/vmware/mo/ClusterMO.java  |   2 +-
 .../com/cloud/hypervisor/vmware/mo/HostMO.java     |   2 +-
 .../hypervisor/vmware/mo/HypervisorHostHelper.java |   2 +-
 .../hypervisor/vmware/mo/VirtualMachineMO.java     |   6 +-
 .../cloud/hypervisor/vmware/util/VmwareClient.java |   2 +-
 .../hypervisor/vmware/util/VmwareContextPool.java  |   6 +-
 .../cloud/hypervisor/vmware/util/VmwareHelper.java |   4 +-
 241 files changed, 771 insertions(+), 857 deletions(-)

diff --git a/agent/src/main/java/com/cloud/agent/Agent.java b/agent/src/main/java/com/cloud/agent/Agent.java
index 144f7ef..4edfb78 100644
--- a/agent/src/main/java/com/cloud/agent/Agent.java
+++ b/agent/src/main/java/com/cloud/agent/Agent.java
@@ -51,6 +51,7 @@ import org.apache.cloudstack.managed.context.ManagedContextTimerTask;
 import org.apache.cloudstack.utils.security.KeyStoreUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.log4j.MDC;
 
@@ -72,7 +73,6 @@ import com.cloud.exception.AgentControlChannelException;
 import com.cloud.host.Host;
 import com.cloud.resource.ServerResource;
 import com.cloud.utils.PropertiesUtil;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.backoff.BackoffAlgorithm;
 import com.cloud.utils.concurrency.NamedThreadFactory;
 import com.cloud.utils.exception.CloudRuntimeException;
@@ -85,7 +85,6 @@ import com.cloud.utils.nio.NioConnection;
 import com.cloud.utils.nio.Task;
 import com.cloud.utils.script.OutputInterpreter;
 import com.cloud.utils.script.Script;
-import com.google.common.base.Strings;
 
 /**
  * @config
@@ -715,7 +714,7 @@ public class Agent implements HandlerFactory, IAgentControl {
         final String csrFile = agentFile.getParent() + "/" + KeyStoreUtils.CSR_FILENAME;
 
         String storedPassword = _shell.getPersistentProperty(null, KeyStoreUtils.KS_PASSPHRASE_PROPERTY);
-        if (Strings.isNullOrEmpty(storedPassword)) {
+        if (StringUtils.isEmpty(storedPassword)) {
             storedPassword = keyStorePassword;
             _shell.setPersistentProperty(null, KeyStoreUtils.KS_PASSPHRASE_PROPERTY, storedPassword);
         }
@@ -782,9 +781,9 @@ public class Agent implements HandlerFactory, IAgentControl {
     }
 
     private void processManagementServerList(final List<String> msList, final String lbAlgorithm, final Long lbCheckInterval) {
-        if (CollectionUtils.isNotEmpty(msList) && !Strings.isNullOrEmpty(lbAlgorithm)) {
+        if (CollectionUtils.isNotEmpty(msList) && StringUtils.isNotEmpty(lbAlgorithm)) {
             try {
-                final String newMSHosts = String.format("%s%s%s", StringUtils.toCSVList(msList), IAgentShell.hostLbAlgorithmSeparator, lbAlgorithm);
+                final String newMSHosts = String.format("%s%s%s", com.cloud.utils.StringUtils.toCSVList(msList), IAgentShell.hostLbAlgorithmSeparator, lbAlgorithm);
                 _shell.setPersistentProperty(null, "host", newMSHosts);
                 _shell.setHosts(newMSHosts);
                 _shell.resetHostCounter();
diff --git a/agent/src/main/java/com/cloud/agent/AgentShell.java b/agent/src/main/java/com/cloud/agent/AgentShell.java
index 01654ac..7d395df 100644
--- a/agent/src/main/java/com/cloud/agent/AgentShell.java
+++ b/agent/src/main/java/com/cloud/agent/AgentShell.java
@@ -36,6 +36,7 @@ import org.apache.commons.daemon.Daemon;
 import org.apache.commons.daemon.DaemonContext;
 import org.apache.commons.daemon.DaemonInitException;
 import org.apache.commons.lang.math.NumberUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.log4j.xml.DOMConfigurator;
 
@@ -50,7 +51,6 @@ import com.cloud.utils.PropertiesUtil;
 import com.cloud.utils.backoff.BackoffAlgorithm;
 import com.cloud.utils.backoff.impl.ConstantTimeBackoff;
 import com.cloud.utils.exception.CloudRuntimeException;
-import com.google.common.base.Strings;
 
 public class AgentShell implements IAgentShell, Daemon {
     private static final Logger s_logger = Logger.getLogger(AgentShell.class.getName());
@@ -155,7 +155,7 @@ public class AgentShell implements IAgentShell, Daemon {
 
     @Override
     public void setHosts(final String host) {
-        if (!Strings.isNullOrEmpty(host)) {
+        if (StringUtils.isNotEmpty(host)) {
             _host = host.split(hostLbAlgorithmSeparator)[0];
             resetHostCounter();
         }
@@ -333,7 +333,7 @@ public class AgentShell implements IAgentShell, Daemon {
         }
 
         String val = getProperty(null, preferredHostIntervalKey);
-        preferredHostCheckInterval = (Strings.isNullOrEmpty(val) ? null : Long.valueOf(val));
+        preferredHostCheckInterval = StringUtils.isEmpty(val) ? null : Long.valueOf(val);
 
         return true;
     }
diff --git a/agent/src/main/java/com/cloud/agent/direct/download/DirectTemplateDownloaderImpl.java b/agent/src/main/java/com/cloud/agent/direct/download/DirectTemplateDownloaderImpl.java
index 9c150e9..16a6dc3 100644
--- a/agent/src/main/java/com/cloud/agent/direct/download/DirectTemplateDownloaderImpl.java
+++ b/agent/src/main/java/com/cloud/agent/direct/download/DirectTemplateDownloaderImpl.java
@@ -20,7 +20,7 @@ package com.cloud.agent.direct.download;
 
 import com.cloud.utils.exception.CloudRuntimeException;
 import org.apache.cloudstack.utils.security.DigestHelper;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import java.io.File;
diff --git a/agent/src/main/java/com/cloud/agent/direct/download/MetalinkDirectTemplateDownloader.java b/agent/src/main/java/com/cloud/agent/direct/download/MetalinkDirectTemplateDownloader.java
index c8e8527..40e77c3 100644
--- a/agent/src/main/java/com/cloud/agent/direct/download/MetalinkDirectTemplateDownloader.java
+++ b/agent/src/main/java/com/cloud/agent/direct/download/MetalinkDirectTemplateDownloader.java
@@ -22,7 +22,7 @@ import com.cloud.utils.Pair;
 import com.cloud.utils.UriUtils;
 import com.cloud.utils.exception.CloudRuntimeException;
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import java.io.File;
diff --git a/api/src/main/java/com/cloud/agent/api/storage/OVFHelper.java b/api/src/main/java/com/cloud/agent/api/storage/OVFHelper.java
index 35835a5..9a522db 100644
--- a/api/src/main/java/com/cloud/agent/api/storage/OVFHelper.java
+++ b/api/src/main/java/com/cloud/agent/api/storage/OVFHelper.java
@@ -50,7 +50,7 @@ import com.cloud.utils.Pair;
 import com.cloud.utils.compression.CompressionUtil;
 import com.cloud.agent.api.to.deployasis.OVFNetworkTO;
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang.math.NumberUtils;
 import org.apache.log4j.Logger;
 import org.w3c.dom.Document;
@@ -274,7 +274,7 @@ public class OVFHelper {
     }
 
     public List<DatadiskTO> getOVFVolumeInfoFromFile(String ovfFilePath, Document doc, String configurationId) throws InternalErrorException {
-        if (org.apache.commons.lang.StringUtils.isBlank(ovfFilePath)) {
+        if (StringUtils.isBlank(ovfFilePath)) {
             return null;
         }
 
@@ -446,7 +446,7 @@ public class OVFHelper {
     }
 
     public Document getDocumentFromFile(String ovfFilePath) {
-        if (org.apache.commons.lang.StringUtils.isBlank(ovfFilePath)) {
+        if (StringUtils.isBlank(ovfFilePath)) {
             return null;
         }
         DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newDefaultInstance();
@@ -724,7 +724,7 @@ public class OVFHelper {
     }
 
     private boolean hardwareItemContainsConfiguration(OVFVirtualHardwareItemTO item, String configurationId) {
-        if (StringUtils.isBlank(configurationId) || StringUtils.isBlank(item.getConfigurationIds())) {
+        if (StringUtils.isAnyBlank(configurationId, item.getConfigurationIds())) {
             return true;
         }
         String configurationIds = item.getConfigurationIds();
diff --git a/api/src/main/java/com/cloud/network/Network.java b/api/src/main/java/com/cloud/network/Network.java
index 111b85a..1940cd0 100644
--- a/api/src/main/java/com/cloud/network/Network.java
+++ b/api/src/main/java/com/cloud/network/Network.java
@@ -23,7 +23,7 @@ import java.util.Date;
 import java.util.List;
 
 import com.cloud.exception.InvalidParameterValueException;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang.builder.ToStringBuilder;
 import org.apache.commons.lang.builder.ToStringStyle;
 
diff --git a/api/src/main/java/com/cloud/network/PhysicalNetwork.java b/api/src/main/java/com/cloud/network/PhysicalNetwork.java
index 48e416c..b30217d 100644
--- a/api/src/main/java/com/cloud/network/PhysicalNetwork.java
+++ b/api/src/main/java/com/cloud/network/PhysicalNetwork.java
@@ -18,9 +18,9 @@ package com.cloud.network;
 
 import com.cloud.exception.CloudException;
 import com.cloud.utils.Pair;
-import com.cloud.utils.StringUtils;
 import org.apache.cloudstack.api.Identity;
 import org.apache.cloudstack.api.InternalIdentity;
+import org.apache.commons.lang3.StringUtils;
 
 import java.util.HashSet;
 import java.util.List;
diff --git a/api/src/main/java/org/apache/cloudstack/acl/RoleType.java b/api/src/main/java/org/apache/cloudstack/acl/RoleType.java
index a8a64a5..1c6a43d 100644
--- a/api/src/main/java/org/apache/cloudstack/acl/RoleType.java
+++ b/api/src/main/java/org/apache/cloudstack/acl/RoleType.java
@@ -16,9 +16,10 @@
 // under the License.
 package org.apache.cloudstack.acl;
 
+import org.apache.commons.lang3.StringUtils;
+
 import com.cloud.user.Account;
 import com.google.common.base.Enums;
-import com.google.common.base.Strings;
 
 // Enum for default roles in CloudStack
 public enum RoleType {
@@ -51,7 +52,7 @@ public enum RoleType {
     }
 
     public static RoleType fromString(final String name) {
-        if (!Strings.isNullOrEmpty(name)
+        if (StringUtils.isNotEmpty(name)
                 && Enums.getIfPresent(RoleType.class, name).isPresent()) {
             return RoleType.valueOf(name);
         }
diff --git a/api/src/main/java/org/apache/cloudstack/acl/Rule.java b/api/src/main/java/org/apache/cloudstack/acl/Rule.java
index 2792010..a4ef777 100644
--- a/api/src/main/java/org/apache/cloudstack/acl/Rule.java
+++ b/api/src/main/java/org/apache/cloudstack/acl/Rule.java
@@ -18,10 +18,11 @@
 package org.apache.cloudstack.acl;
 
 import com.cloud.exception.InvalidParameterValueException;
-import com.google.common.base.Strings;
 
 import java.util.regex.Pattern;
 
+import org.apache.commons.lang3.StringUtils;
+
 public final class Rule {
     private final String rule;
     private final static Pattern ALLOWED_PATTERN = Pattern.compile("^[a-zA-Z0-9*]+$");
@@ -32,7 +33,7 @@ public final class Rule {
     }
 
     public boolean matches(final String commandName) {
-        return !Strings.isNullOrEmpty(commandName)
+        return StringUtils.isNotEmpty(commandName)
                 && commandName.toLowerCase().matches(rule.toLowerCase().replace("*", "\\w*"));
     }
 
@@ -46,7 +47,7 @@ public final class Rule {
     }
 
     private static boolean validate(final String rule) {
-        if (Strings.isNullOrEmpty(rule) || !ALLOWED_PATTERN.matcher(rule).matches()) {
+        if (StringUtils.isEmpty(rule) || !ALLOWED_PATTERN.matcher(rule).matches()) {
             throw new InvalidParameterValueException("Only API names and wildcards are allowed, invalid rule provided: " + rule);
         }
         return true;
diff --git a/api/src/main/java/org/apache/cloudstack/api/ApiArgValidator.java b/api/src/main/java/org/apache/cloudstack/api/ApiArgValidator.java
index bd2294c..971bb82 100644
--- a/api/src/main/java/org/apache/cloudstack/api/ApiArgValidator.java
+++ b/api/src/main/java/org/apache/cloudstack/api/ApiArgValidator.java
@@ -18,6 +18,6 @@
 package org.apache.cloudstack.api;
 
 public enum ApiArgValidator {
-    NotNullOrEmpty, // does Strings.isNullOrEmpty check
+    NotNullOrEmpty, // does StringUtils.isEmpty check
     PositiveNumber, // does != null and > 0 check
 }
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/account/CreateAccountCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/account/CreateAccountCmd.java
index 508750a..dc265bd 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/account/CreateAccountCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/account/CreateAccountCmd.java
@@ -19,7 +19,7 @@ package org.apache.cloudstack.api.command.admin.account;
 import java.util.Collection;
 import java.util.Map;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import org.apache.cloudstack.acl.RoleType;
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/BaseRolePermissionCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/BaseRolePermissionCmd.java
index a6c6e20..9853c22 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/BaseRolePermissionCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/BaseRolePermissionCmd.java
@@ -22,8 +22,8 @@ import org.apache.cloudstack.acl.Rule;
 import org.apache.cloudstack.api.ApiConstants;
 import org.apache.cloudstack.api.BaseCmd;
 import org.apache.cloudstack.api.Parameter;
+import org.apache.commons.lang3.StringUtils;
 
-import com.google.common.base.Strings;
 
 public abstract class BaseRolePermissionCmd extends BaseCmd {
 
@@ -49,7 +49,7 @@ public abstract class BaseRolePermissionCmd extends BaseCmd {
     }
 
     public Permission getPermission() {
-        if (Strings.isNullOrEmpty(permission)) {
+        if (StringUtils.isEmpty(permission)) {
             return null;
         }
         return Permission.valueOf(permission.toUpperCase());
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/ImportRoleCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/ImportRoleCmd.java
index 2ad07e7..b51cb42 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/ImportRoleCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/ImportRoleCmd.java
@@ -39,9 +39,9 @@ import org.apache.cloudstack.api.ServerApiException;
 import org.apache.cloudstack.api.response.RoleResponse;
 import org.apache.cloudstack.context.CallContext;
 import org.apache.commons.collections.MapUtils;
+import org.apache.commons.lang3.StringUtils;
 
 import com.cloud.user.Account;
-import com.google.common.base.Strings;
 
 @APICommand(name = ImportRoleCmd.APINAME, description = "Imports a role based on provided map of rule permissions", responseObject = RoleResponse.class,
         requestHasSensitiveInfo = false, responseHasSensitiveInfo = false,
@@ -90,19 +90,20 @@ public class ImportRoleCmd extends RoleCmd {
             HashMap<String, String> detail = (HashMap<String, String>)iter.next();
             Map<String, Object> ruleDetails = new HashMap<>();
             String rule = detail.get(ApiConstants.RULE);
-            if (Strings.isNullOrEmpty(rule)) {
+
+            if (StringUtils.isEmpty(rule)) {
                 throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Empty rule provided in rules param");
             }
             ruleDetails.put(ApiConstants.RULE, new Rule(rule));
 
             String permission = detail.get(ApiConstants.PERMISSION);
-            if (Strings.isNullOrEmpty(permission)) {
+            if (StringUtils.isEmpty(permission)) {
                 throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Invalid permission: "+ permission + " provided in rules param");
             }
             ruleDetails.put(ApiConstants.PERMISSION, roleService.getRolePermission(permission));
 
             String description = detail.get(ApiConstants.DESCRIPTION);
-            if (!Strings.isNullOrEmpty(permission)) {
+            if (StringUtils.isNotEmpty(permission)) {
                 ruleDetails.put(ApiConstants.DESCRIPTION, description);
             }
 
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/ListRolesCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/ListRolesCmd.java
index 1d2af11..9a23618 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/ListRolesCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/ListRolesCmd.java
@@ -33,7 +33,6 @@ import org.apache.commons.lang3.StringUtils;
 
 import com.cloud.user.Account;
 import com.cloud.utils.Pair;
-import com.google.common.base.Strings;
 
 @APICommand(name = ListRolesCmd.APINAME, description = "Lists dynamic roles in CloudStack", responseObject = RoleResponse.class, requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, since = "4.9.0", authorized = {
         RoleType.Admin, RoleType.ResourceAdmin, RoleType.DomainAdmin })
@@ -66,7 +65,7 @@ public class ListRolesCmd extends BaseListCmd {
     }
 
     public RoleType getRoleType() {
-        if (!Strings.isNullOrEmpty(roleType)) {
+        if (StringUtils.isNotEmpty(roleType)) {
             return RoleType.valueOf(roleType);
         }
         return null;
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/RoleCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/RoleCmd.java
index 440278b..e652918 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/RoleCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/RoleCmd.java
@@ -23,8 +23,7 @@ import org.apache.cloudstack.api.ApiConstants;
 import org.apache.cloudstack.api.BaseCmd;
 import org.apache.cloudstack.api.Parameter;
 import org.apache.cloudstack.api.response.RoleResponse;
-
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public abstract class RoleCmd extends BaseCmd {
 
@@ -43,7 +42,7 @@ public abstract class RoleCmd extends BaseCmd {
     /////////////////////////////////////////////////////
 
     public RoleType getRoleType() {
-        if (!Strings.isNullOrEmpty(roleType)) {
+        if (StringUtils.isNotEmpty(roleType)) {
             return RoleType.fromString(roleType);
         }
         return null;
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/annotation/ListAnnotationsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/annotation/ListAnnotationsCmd.java
index 92e5414..76c89c2 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/annotation/ListAnnotationsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/annotation/ListAnnotationsCmd.java
@@ -21,7 +21,6 @@ import com.cloud.exception.InsufficientCapacityException;
 import com.cloud.exception.NetworkRuleConflictException;
 import com.cloud.exception.ResourceAllocationException;
 import com.cloud.exception.ResourceUnavailableException;
-import com.cloud.utils.StringUtils;
 import com.google.common.base.Preconditions;
 import org.apache.cloudstack.acl.RoleType;
 import org.apache.cloudstack.api.APICommand;
@@ -32,6 +31,7 @@ import org.apache.cloudstack.api.Parameter;
 import org.apache.cloudstack.api.ServerApiException;
 import org.apache.cloudstack.api.response.AnnotationResponse;
 import org.apache.cloudstack.api.response.ListResponse;
+import org.apache.commons.lang3.StringUtils;
 
 @APICommand(name = ListAnnotationsCmd.APINAME, description = "Lists annotations.", responseObject = AnnotationResponse.class,
         requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, since = "4.11", authorized = {RoleType.Admin})
@@ -84,7 +84,7 @@ public class ListAnnotationsCmd extends BaseListCmd {
             NetworkRuleConflictException {
         // preconditions to check:
         // if entity type is null entity uuid can not have a value
-        Preconditions.checkArgument(StringUtils.isNotBlank(entityType) ? ! StringUtils.isNotBlank(uuid) : true,
+        Preconditions.checkArgument(StringUtils.isNotBlank(entityType) ? StringUtils.isBlank(uuid) : true,
                 "I can search for an anotation on an entity or for a specific annotation, not both");
         // if uuid has a value entity type and entity uuid can not have a value
         Preconditions.checkArgument(StringUtils.isNotBlank(uuid) ? entityType == null && entityUuid == null : true,
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/ca/IssueCertificateCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/ca/IssueCertificateCmd.java
index 8926829..f26c974 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/ca/IssueCertificateCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/ca/IssueCertificateCmd.java
@@ -36,10 +36,10 @@ import org.apache.cloudstack.ca.CAManager;
 import org.apache.cloudstack.context.CallContext;
 import org.apache.cloudstack.framework.ca.Certificate;
 import org.apache.cloudstack.utils.security.CertUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.event.EventTypes;
-import com.google.common.base.Strings;
 
 @APICommand(name = IssueCertificateCmd.APINAME,
         description = "Issues a client certificate using configured or provided CA plugin",
@@ -85,7 +85,7 @@ public class IssueCertificateCmd extends BaseAsyncCmd {
 
     private List<String> processList(final String string) {
         final List<String> list = new ArrayList<>();
-        if (!Strings.isNullOrEmpty(string)) {
+        if (StringUtils.isNotEmpty(string)) {
             for (final String address: string.split(",")) {
                 list.add(address.trim());
             }
@@ -115,7 +115,7 @@ public class IssueCertificateCmd extends BaseAsyncCmd {
 
     @Override
     public void execute() {
-        if (Strings.isNullOrEmpty(getCsr()) && getDomains().isEmpty()) {
+        if (StringUtils.isEmpty(getCsr()) && getDomains().isEmpty()) {
             throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Please provide the domains or the CSR, none of them are provided");
         }
         final Certificate certificate = caManager.issueCertificate(getCsr(), getDomains(), getAddresses(), getValidityDuration(), getProvider());
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/ca/RevokeCertificateCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/ca/RevokeCertificateCmd.java
index 0f154f0..f3277b5 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/ca/RevokeCertificateCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/ca/RevokeCertificateCmd.java
@@ -32,9 +32,9 @@ import org.apache.cloudstack.api.ServerApiException;
 import org.apache.cloudstack.api.response.SuccessResponse;
 import org.apache.cloudstack.ca.CAManager;
 import org.apache.cloudstack.context.CallContext;
+import org.apache.commons.lang3.StringUtils;
 
 import com.cloud.event.EventTypes;
-import com.google.common.base.Strings;
 
 @APICommand(name = RevokeCertificateCmd.APINAME,
         description = "Revokes certificate using configured CA plugin",
@@ -68,7 +68,7 @@ public class RevokeCertificateCmd extends BaseAsyncCmd {
     /////////////////////////////////////////////////////
 
     public BigInteger getSerialBigInteger() {
-        if (Strings.isNullOrEmpty(serial)) {
+        if (StringUtils.isEmpty(serial)) {
             throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Certificate serial cannot be empty");
         }
         return new BigInteger(serial, 16);
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/config/UpdateCfgCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/config/UpdateCfgCmd.java
index 936f0cd..acc0d79 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/config/UpdateCfgCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/config/UpdateCfgCmd.java
@@ -16,7 +16,6 @@
 // under the License.
 package org.apache.cloudstack.api.command.admin.config;
 
-import com.google.common.base.Strings;
 import org.apache.cloudstack.acl.RoleService;
 import org.apache.cloudstack.api.response.DomainResponse;
 import org.apache.log4j.Logger;
@@ -34,6 +33,7 @@ import org.apache.cloudstack.api.response.ImageStoreResponse;
 import org.apache.cloudstack.api.response.StoragePoolResponse;
 import org.apache.cloudstack.api.response.ZoneResponse;
 import org.apache.cloudstack.config.Configuration;
+import org.apache.commons.lang3.StringUtils;
 
 import com.cloud.user.Account;
 
@@ -146,7 +146,7 @@ public class UpdateCfgCmd extends BaseCmd {
 
     @Override
     public void execute() {
-        if (Strings.isNullOrEmpty(getCfgName())) {
+        if (StringUtils.isEmpty(getCfgName())) {
             throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Empty configuration name provided");
         }
         if (getCfgName().equalsIgnoreCase(RoleService.EnableDynamicApiChecker.key())) {
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdateNetworkOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdateNetworkOfferingCmd.java
index 83c8274..7faa8e5 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdateNetworkOfferingCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdateNetworkOfferingCmd.java
@@ -26,6 +26,7 @@ import org.apache.cloudstack.api.BaseCmd;
 import org.apache.cloudstack.api.Parameter;
 import org.apache.cloudstack.api.ServerApiException;
 import org.apache.cloudstack.api.response.NetworkOfferingResponse;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.dc.DataCenter;
@@ -33,7 +34,6 @@ import com.cloud.domain.Domain;
 import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.offering.NetworkOffering;
 import com.cloud.user.Account;
-import com.google.common.base.Strings;
 
 @APICommand(name = "updateNetworkOffering", description = "Updates a network offering.", responseObject = NetworkOfferingResponse.class,
         requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
@@ -131,7 +131,7 @@ public class UpdateNetworkOfferingCmd extends BaseCmd {
 
     public List<Long> getDomainIds() {
         List<Long> validDomainIds = new ArrayList<>();
-        if (!Strings.isNullOrEmpty(domainIds)) {
+        if (StringUtils.isNotEmpty(domainIds)) {
             if (domainIds.contains(",")) {
                 String[] domains = domainIds.split(",");
                 for (String domain : domains) {
@@ -161,7 +161,7 @@ public class UpdateNetworkOfferingCmd extends BaseCmd {
 
     public List<Long> getZoneIds() {
         List<Long> validZoneIds = new ArrayList<>();
-        if (!Strings.isNullOrEmpty(zoneIds)) {
+        if (StringUtils.isNotEmpty(zoneIds)) {
             if (zoneIds.contains(",")) {
                 String[] zones = zoneIds.split(",");
                 for (String zone : zones) {
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmd.java
index b301560..5976aa8 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmd.java
@@ -34,6 +34,7 @@ import org.apache.cloudstack.api.response.ServiceOfferingResponse;
 import org.apache.cloudstack.api.response.VsphereStoragePoliciesResponse;
 import org.apache.cloudstack.api.response.ZoneResponse;
 import org.apache.commons.collections.MapUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.log4j.Logger;
 
@@ -41,7 +42,6 @@ import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.offering.ServiceOffering;
 import com.cloud.storage.Storage;
 import com.cloud.user.Account;
-import com.google.common.base.Strings;
 
 @APICommand(name = "createServiceOffering", description = "Creates a service offering.", responseObject = ServiceOfferingResponse.class,
         requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
@@ -240,7 +240,7 @@ public class CreateServiceOfferingCmd extends BaseCmd {
     }
 
     public String getDisplayText() {
-        if (Strings.isNullOrEmpty(displayText)) {
+        if (StringUtils.isEmpty(displayText)) {
             throw new InvalidParameterValueException("Failed to create service offering because the offering display text has not been spified.");
         }
         return displayText;
@@ -255,7 +255,7 @@ public class CreateServiceOfferingCmd extends BaseCmd {
     }
 
     public String getServiceOfferingName() {
-        if (Strings.isNullOrEmpty(serviceOfferingName)) {
+        if (StringUtils.isEmpty(serviceOfferingName)) {
             throw new InvalidParameterValueException("Failed to create service offering because offering name has not been spified.");
         }
         return serviceOfferingName;
@@ -326,7 +326,7 @@ public class CreateServiceOfferingCmd extends BaseCmd {
             for (Object prop : props) {
                 HashMap<String, String> detail = (HashMap<String, String>) prop;
                 // Compatibility with key and value pairs input from API cmd for details map parameter
-                if (!Strings.isNullOrEmpty(detail.get("key")) && !Strings.isNullOrEmpty(detail.get("value"))) {
+                if (StringUtils.isNoneEmpty(detail.get("key"), detail.get("value"))) {
                     detailsMap.put(detail.get("key"), detail.get("value"));
                     continue;
                 }
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/UpdateDiskOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/UpdateDiskOfferingCmd.java
index 5ccdc06..b679192 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/UpdateDiskOfferingCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/UpdateDiskOfferingCmd.java
@@ -27,6 +27,7 @@ import org.apache.cloudstack.api.BaseCmd;
 import org.apache.cloudstack.api.Parameter;
 import org.apache.cloudstack.api.ServerApiException;
 import org.apache.cloudstack.api.response.DiskOfferingResponse;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.dc.DataCenter;
@@ -34,7 +35,6 @@ import com.cloud.domain.Domain;
 import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.offering.DiskOffering;
 import com.cloud.user.Account;
-import com.google.common.base.Strings;
 
 @APICommand(name = "updateDiskOffering", description = "Updates a disk offering.", responseObject = DiskOfferingResponse.class,
         requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
@@ -150,7 +150,7 @@ public class UpdateDiskOfferingCmd extends BaseCmd {
 
     public List<Long> getDomainIds() {
         List<Long> validDomainIds = new ArrayList<>();
-        if (!Strings.isNullOrEmpty(domainIds)) {
+        if (StringUtils.isNotEmpty(domainIds)) {
             if (domainIds.contains(",")) {
                 String[] domains = domainIds.split(",");
                 for (String domain : domains) {
@@ -180,7 +180,7 @@ public class UpdateDiskOfferingCmd extends BaseCmd {
 
     public List<Long> getZoneIds() {
         List<Long> validZoneIds = new ArrayList<>();
-        if (!Strings.isNullOrEmpty(zoneIds)) {
+        if (StringUtils.isNotEmpty(zoneIds)) {
             if (zoneIds.contains(",")) {
                 String[] zones = zoneIds.split(",");
                 for (String zone : zones) {
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/UpdateServiceOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/UpdateServiceOfferingCmd.java
index 4212a00..add970fc 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/UpdateServiceOfferingCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/UpdateServiceOfferingCmd.java
@@ -26,8 +26,8 @@ import org.apache.cloudstack.api.ApiErrorCode;
 import org.apache.cloudstack.api.BaseCmd;
 import org.apache.cloudstack.api.Parameter;
 import org.apache.cloudstack.api.ServerApiException;
-import org.apache.cloudstack.api.BaseCmd.CommandType;
 import org.apache.cloudstack.api.response.ServiceOfferingResponse;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.dc.DataCenter;
@@ -35,7 +35,6 @@ import com.cloud.domain.Domain;
 import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.offering.ServiceOffering;
 import com.cloud.user.Account;
-import com.google.common.base.Strings;
 
 @APICommand(name = "updateServiceOffering", description = "Updates a service offering.", responseObject = ServiceOfferingResponse.class,
         requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
@@ -109,7 +108,7 @@ public class UpdateServiceOfferingCmd extends BaseCmd {
 
     public List<Long> getDomainIds() {
         List<Long> validDomainIds = new ArrayList<>();
-        if (!Strings.isNullOrEmpty(domainIds)) {
+        if (StringUtils.isNotEmpty(domainIds)) {
             if (domainIds.contains(",")) {
                 String[] domains = domainIds.split(",");
                 for (String domain : domains) {
@@ -139,7 +138,7 @@ public class UpdateServiceOfferingCmd extends BaseCmd {
 
     public List<Long> getZoneIds() {
         List<Long> validZoneIds = new ArrayList<>();
-        if (!Strings.isNullOrEmpty(zoneIds)) {
+        if (StringUtils.isNotEmpty(zoneIds)) {
             if (zoneIds.contains(",")) {
                 String[] zones = zoneIds.split(",");
                 for (String zone : zones) {
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/outofbandmanagement/ChangeOutOfBandManagementPasswordCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/outofbandmanagement/ChangeOutOfBandManagementPasswordCmd.java
index 0499a6e..0bd029a 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/outofbandmanagement/ChangeOutOfBandManagementPasswordCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/outofbandmanagement/ChangeOutOfBandManagementPasswordCmd.java
@@ -23,7 +23,6 @@ import com.cloud.exception.NetworkRuleConflictException;
 import com.cloud.exception.ResourceAllocationException;
 import com.cloud.exception.ResourceUnavailableException;
 import com.cloud.host.Host;
-import com.google.common.base.Strings;
 import org.apache.cloudstack.acl.RoleType;
 import org.apache.cloudstack.api.APICommand;
 import org.apache.cloudstack.api.ApiArgValidator;
@@ -37,6 +36,7 @@ import org.apache.cloudstack.api.response.HostResponse;
 import org.apache.cloudstack.api.response.OutOfBandManagementResponse;
 import org.apache.cloudstack.context.CallContext;
 import org.apache.cloudstack.outofbandmanagement.OutOfBandManagementService;
+import org.apache.commons.lang3.StringUtils;
 
 import javax.inject.Inject;
 
@@ -94,7 +94,7 @@ public class ChangeOutOfBandManagementPasswordCmd extends BaseAsyncCmd {
     }
 
     public String getPassword() {
-        if (Strings.isNullOrEmpty(password)) {
+        if (StringUtils.isEmpty(password)) {
             password = _mgr.generateRandomPassword();
         }
         return password;
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/outofbandmanagement/ConfigureOutOfBandManagementCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/outofbandmanagement/ConfigureOutOfBandManagementCmd.java
index d9c6c9f..f58d521 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/outofbandmanagement/ConfigureOutOfBandManagementCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/outofbandmanagement/ConfigureOutOfBandManagementCmd.java
@@ -22,7 +22,6 @@ import com.cloud.exception.NetworkRuleConflictException;
 import com.cloud.exception.ResourceAllocationException;
 import com.cloud.exception.ResourceUnavailableException;
 import com.cloud.host.Host;
-import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableMap;
 import org.apache.cloudstack.acl.RoleType;
 import org.apache.cloudstack.api.APICommand;
@@ -37,6 +36,7 @@ import org.apache.cloudstack.api.response.OutOfBandManagementResponse;
 import org.apache.cloudstack.context.CallContext;
 import org.apache.cloudstack.outofbandmanagement.OutOfBandManagement;
 import org.apache.cloudstack.outofbandmanagement.OutOfBandManagementService;
+import org.apache.commons.lang3.StringUtils;
 
 import javax.inject.Inject;
 
@@ -105,21 +105,17 @@ public class ConfigureOutOfBandManagementCmd extends BaseCmd {
 
     public final ImmutableMap<OutOfBandManagement.Option, String> getHostPMOptions() {
         final ImmutableMap.Builder<OutOfBandManagement.Option, String> builder = ImmutableMap.builder();
-        if (!Strings.isNullOrEmpty(driver)) {
-            builder.put(OutOfBandManagement.Option.DRIVER, driver);
-        }
-        if (!Strings.isNullOrEmpty(address)) {
-            builder.put(OutOfBandManagement.Option.ADDRESS, address);
-        }
-        if (!Strings.isNullOrEmpty(port)) {
-            builder.put(OutOfBandManagement.Option.PORT, port);
-        }
-        if (!Strings.isNullOrEmpty(username)) {
-            builder.put(OutOfBandManagement.Option.USERNAME, username);
-        }
-        if (!Strings.isNullOrEmpty(password)) {
-            builder.put(OutOfBandManagement.Option.PASSWORD, password);
-        }
+        putOptionIfIsNotEmpty(builder, OutOfBandManagement.Option.DRIVER, driver);
+        putOptionIfIsNotEmpty(builder, OutOfBandManagement.Option.ADDRESS, address);
+        putOptionIfIsNotEmpty(builder, OutOfBandManagement.Option.PORT, port);
+        putOptionIfIsNotEmpty(builder, OutOfBandManagement.Option.USERNAME, username);
+        putOptionIfIsNotEmpty(builder, OutOfBandManagement.Option.PASSWORD, password);
         return builder.build();
     }
+
+    protected void putOptionIfIsNotEmpty(ImmutableMap.Builder<OutOfBandManagement.Option, String> builder, OutOfBandManagement.Option option, String value) {
+        if (StringUtils.isNotEmpty(value)) {
+            builder.put(option, value);
+        }
+    }
 }
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/CreateUserCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/CreateUserCmd.java
index 71d6a66..884c982 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/CreateUserCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/CreateUserCmd.java
@@ -25,7 +25,7 @@ import org.apache.cloudstack.api.ServerApiException;
 import org.apache.cloudstack.api.response.DomainResponse;
 import org.apache.cloudstack.api.response.UserResponse;
 import org.apache.cloudstack.context.CallContext;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.user.Account;
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/ImportUnmanagedInstanceCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/ImportUnmanagedInstanceCmd.java
index 5f924f2..dca683f 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/ImportUnmanagedInstanceCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/ImportUnmanagedInstanceCmd.java
@@ -40,6 +40,7 @@ import org.apache.cloudstack.context.CallContext;
 import org.apache.cloudstack.vm.VmImportService;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.BooleanUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.event.EventTypes;
@@ -54,7 +55,6 @@ import com.cloud.offering.DiskOffering;
 import com.cloud.user.Account;
 import com.cloud.utils.net.NetUtils;
 import com.cloud.vm.VmDetailConstants;
-import com.google.common.base.Strings;
 
 @APICommand(name = ImportUnmanagedInstanceCmd.API_NAME,
         description = "Import unmanaged virtual machine from a given cluster.",
@@ -207,7 +207,7 @@ public class ImportUnmanagedInstanceCmd extends BaseAsyncCmd {
                 if (LOGGER.isTraceEnabled()) {
                     LOGGER.trace(String.format("nic, '%s', goes on net, '%s'", nic, networkUuid));
                 }
-                if (Strings.isNullOrEmpty(nic) || Strings.isNullOrEmpty(networkUuid) || _entityMgr.findByUuid(Network.class, networkUuid) == null) {
+                if (StringUtils.isAnyEmpty(nic, networkUuid) || _entityMgr.findByUuid(Network.class, networkUuid) == null) {
                     throw new InvalidParameterValueException(String.format("Network ID: %s for NIC ID: %s is invalid", networkUuid, nic));
                 }
                 nicNetworkMap.put(nic, _entityMgr.findByUuid(Network.class, networkUuid).getId());
@@ -221,17 +221,17 @@ public class ImportUnmanagedInstanceCmd extends BaseAsyncCmd {
         if (MapUtils.isNotEmpty(nicIpAddressList)) {
             for (Map<String, String> entry : (Collection<Map<String, String>>)nicIpAddressList.values()) {
                 String nic = entry.get(VmDetailConstants.NIC);
-                String ipAddress = Strings.emptyToNull(entry.get(VmDetailConstants.IP4_ADDRESS));
+                String ipAddress = StringUtils.defaultIfEmpty(entry.get(VmDetailConstants.IP4_ADDRESS), null);
                 if (LOGGER.isTraceEnabled()) {
                     LOGGER.trace(String.format("nic, '%s', gets ip, '%s'", nic, ipAddress));
                 }
-                if (Strings.isNullOrEmpty(nic)) {
+                if (StringUtils.isEmpty(nic)) {
                     throw new InvalidParameterValueException(String.format("NIC ID: '%s' is invalid for IP address mapping", nic));
                 }
-                if (Strings.isNullOrEmpty(ipAddress)) {
+                if (StringUtils.isEmpty(ipAddress)) {
                     throw new InvalidParameterValueException(String.format("Empty address for NIC ID: %s is invalid", nic));
                 }
-                if (!Strings.isNullOrEmpty(ipAddress) && !ipAddress.equals("auto") && !NetUtils.isValidIp4(ipAddress)) {
+                if (StringUtils.isNotEmpty(ipAddress) && !ipAddress.equals("auto") && !NetUtils.isValidIp4(ipAddress)) {
                     throw new InvalidParameterValueException(String.format("IP address '%s' for NIC ID: %s is invalid", ipAddress, nic));
                 }
                 Network.IpAddresses ipAddresses = new Network.IpAddresses(ipAddress, null);
@@ -250,7 +250,7 @@ public class ImportUnmanagedInstanceCmd extends BaseAsyncCmd {
                 if (LOGGER.isTraceEnabled()) {
                     LOGGER.trace(String.format("disk, '%s', gets offering, '%s'", disk, offeringUuid));
                 }
-                if (Strings.isNullOrEmpty(disk) || Strings.isNullOrEmpty(offeringUuid) || _entityMgr.findByUuid(DiskOffering.class, offeringUuid) == null) {
+                if (StringUtils.isAnyEmpty(disk, offeringUuid) || _entityMgr.findByUuid(DiskOffering.class, offeringUuid) == null) {
                     throw new InvalidParameterValueException(String.format("Disk offering ID: %s for disk ID: %s is invalid", offeringUuid, disk));
                 }
                 dataDiskToDiskOfferingMap.put(disk, _entityMgr.findByUuid(DiskOffering.class, offeringUuid).getId());
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/UpdateVPCOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/UpdateVPCOfferingCmd.java
index ce8f96c..77b37a0 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/UpdateVPCOfferingCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/UpdateVPCOfferingCmd.java
@@ -26,6 +26,7 @@ import org.apache.cloudstack.api.BaseAsyncCmd;
 import org.apache.cloudstack.api.Parameter;
 import org.apache.cloudstack.api.ServerApiException;
 import org.apache.cloudstack.api.response.VpcOfferingResponse;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.dc.DataCenter;
@@ -34,7 +35,6 @@ import com.cloud.event.EventTypes;
 import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.network.vpc.VpcOffering;
 import com.cloud.user.Account;
-import com.google.common.base.Strings;
 
 @APICommand(name = "updateVPCOffering", description = "Updates VPC offering", responseObject = VpcOfferingResponse.class,
         requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
@@ -94,7 +94,7 @@ public class UpdateVPCOfferingCmd extends BaseAsyncCmd {
 
     public List<Long> getDomainIds() {
         List<Long> validDomainIds = new ArrayList<>();
-        if (!Strings.isNullOrEmpty(domainIds)) {
+        if (StringUtils.isNotEmpty(domainIds)) {
             if (domainIds.contains(",")) {
                 String[] domains = domainIds.split(",");
                 for (String domain : domains) {
@@ -124,7 +124,7 @@ public class UpdateVPCOfferingCmd extends BaseAsyncCmd {
 
     public List<Long> getZoneIds() {
         List<Long> validZoneIds = new ArrayList<>();
-        if (!Strings.isNullOrEmpty(zoneIds)) {
+        if (StringUtils.isNotEmpty(zoneIds)) {
             if (zoneIds.contains(",")) {
                 String[] zones = zoneIds.split(",");
                 for (String zone : zones) {
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/account/AddAccountToProjectCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/account/AddAccountToProjectCmd.java
index 62cb100..255cdeb 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/user/account/AddAccountToProjectCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/user/account/AddAccountToProjectCmd.java
@@ -22,6 +22,7 @@ import org.apache.cloudstack.api.ApiArgValidator;
 import org.apache.cloudstack.api.BaseCmd;
 import org.apache.cloudstack.api.response.ProjectRoleResponse;
 import org.apache.commons.lang3.EnumUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import org.apache.cloudstack.api.APICommand;
@@ -38,7 +39,6 @@ import com.cloud.event.EventTypes;
 import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.projects.Project;
 import com.cloud.projects.ProjectAccount;
-import com.google.common.base.Strings;
 
 @APICommand(name = "addAccountToProject", description = "Adds account to a project", responseObject = SuccessResponse.class, since = "3.0.0",
         requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
@@ -93,7 +93,7 @@ public class AddAccountToProjectCmd extends BaseAsyncCmd {
     }
 
     public ProjectAccount.Role getRoleType() {
-        if (!Strings.isNullOrEmpty(roleType)) {
+        if (StringUtils.isNotEmpty(roleType)) {
             String role = roleType.substring(0, 1).toUpperCase() + roleType.substring(1).toLowerCase();
             if (!EnumUtils.isValidEnum(ProjectAccount.Role.class, role)) {
                 throw new InvalidParameterValueException("Only Admin or Regular project role types are valid");
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/account/AddUserToProjectCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/account/AddUserToProjectCmd.java
index c8e71fe..5ebb3be 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/user/account/AddUserToProjectCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/user/account/AddUserToProjectCmd.java
@@ -35,7 +35,7 @@ import org.apache.commons.lang3.EnumUtils;
 import com.cloud.event.EventTypes;
 import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.projects.ProjectAccount;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 @APICommand(name = AddUserToProjectCmd.APINAME, description = "Adds user to a project", responseObject = SuccessResponse.class, since = "4.14",
         requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, authorized = {RoleType.Admin, RoleType.DomainAdmin, RoleType.ResourceAdmin, RoleType.User})
@@ -86,7 +86,7 @@ public class AddUserToProjectCmd extends BaseAsyncCmd {
     }
 
     public ProjectAccount.Role getRoleType() {
-        if (!Strings.isNullOrEmpty(roleType)) {
+        if (StringUtils.isNotEmpty(roleType)) {
             String role = roleType.substring(0, 1).toUpperCase() + roleType.substring(1).toLowerCase();
             if (!EnumUtils.isValidEnum(ProjectAccount.Role.class, role)) {
                 throw new InvalidParameterValueException("Only Admin or Regular project role types are valid");
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/loadbalancer/AssignToLoadBalancerRuleCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/loadbalancer/AssignToLoadBalancerRuleCmd.java
index 1e73037..6fda59d 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/user/loadbalancer/AssignToLoadBalancerRuleCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/user/loadbalancer/AssignToLoadBalancerRuleCmd.java
@@ -36,12 +36,12 @@ import org.apache.cloudstack.api.response.FirewallRuleResponse;
 import org.apache.cloudstack.api.response.SuccessResponse;
 import org.apache.cloudstack.api.response.UserVmResponse;
 import org.apache.cloudstack.context.CallContext;
+import org.apache.commons.lang3.StringUtils;
 
 import com.cloud.event.EventTypes;
 import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.network.rules.LoadBalancer;
 import com.cloud.user.Account;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.net.NetUtils;
 import com.cloud.vm.VirtualMachine;
 
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/loadbalancer/RemoveFromLoadBalancerRuleCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/loadbalancer/RemoveFromLoadBalancerRuleCmd.java
index 1376556..048de30 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/user/loadbalancer/RemoveFromLoadBalancerRuleCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/user/loadbalancer/RemoveFromLoadBalancerRuleCmd.java
@@ -36,12 +36,12 @@ import org.apache.cloudstack.api.response.FirewallRuleResponse;
 import org.apache.cloudstack.api.response.SuccessResponse;
 import org.apache.cloudstack.api.response.UserVmResponse;
 import org.apache.cloudstack.context.CallContext;
+import org.apache.commons.lang3.StringUtils;
 
 import com.cloud.event.EventTypes;
 import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.network.rules.LoadBalancer;
 import com.cloud.user.Account;
-import com.cloud.utils.StringUtils;
 
 @APICommand(name = "removeFromLoadBalancerRule",
             description = "Removes a virtual machine or a list of virtual machines from a load balancer rule.",
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/network/CreateNetworkACLCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/network/CreateNetworkACLCmd.java
index 3d79c22..ca6c801 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/user/network/CreateNetworkACLCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/user/network/CreateNetworkACLCmd.java
@@ -30,7 +30,7 @@ import org.apache.cloudstack.api.response.NetworkACLItemResponse;
 import org.apache.cloudstack.api.response.NetworkACLResponse;
 import org.apache.cloudstack.api.response.NetworkResponse;
 import org.apache.cloudstack.context.CallContext;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.event.EventTypes;
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/network/ListNetworksCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/network/ListNetworksCmd.java
index 5149d4e..315a58a 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/user/network/ListNetworksCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/user/network/ListNetworksCmd.java
@@ -40,7 +40,7 @@ import org.apache.cloudstack.api.response.ZoneResponse;
 
 import com.cloud.network.Network;
 import com.cloud.utils.Pair;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 @APICommand(name = "listNetworks", description = "Lists all available networks.", responseObject = NetworkResponse.class, responseView = ResponseView.Restricted, entityType = {Network.class},
         requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
@@ -113,7 +113,7 @@ public class ListNetworksCmd extends BaseListTaggedResourcesCmd implements UserC
     }
 
     public String getGuestIpType() {
-        if (!Strings.isNullOrEmpty(guestIpType)) {
+        if (StringUtils.isNotEmpty(guestIpType)) {
             if (guestIpType.equalsIgnoreCase("all")) {
                 return null;
             }
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/project/UpdateProjectCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/project/UpdateProjectCmd.java
index 70aa26d..8108bde 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/user/project/UpdateProjectCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/user/project/UpdateProjectCmd.java
@@ -35,7 +35,7 @@ import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.exception.ResourceAllocationException;
 import com.cloud.projects.Project;
 import com.cloud.projects.ProjectAccount;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 @APICommand(name = "updateProject", description = "Updates a project", responseObject = ProjectResponse.class, since = "3.0.0",
         requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
@@ -97,7 +97,7 @@ public class UpdateProjectCmd extends BaseAsyncCmd {
     }
 
     public ProjectAccount.Role getAccountRole() {
-        if (!Strings.isNullOrEmpty(roleType)) {
+        if (StringUtils.isNotEmpty(roleType)) {
             return getRoleType(roleType);
         }
         return ProjectAccount.Role.Regular;
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/region/ha/gslb/AssignToGlobalLoadBalancerRuleCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/region/ha/gslb/AssignToGlobalLoadBalancerRuleCmd.java
index 99971bf..27723da 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/user/region/ha/gslb/AssignToGlobalLoadBalancerRuleCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/user/region/ha/gslb/AssignToGlobalLoadBalancerRuleCmd.java
@@ -37,6 +37,7 @@ import org.apache.cloudstack.api.response.FirewallRuleResponse;
 import org.apache.cloudstack.api.response.GlobalLoadBalancerResponse;
 import org.apache.cloudstack.api.response.SuccessResponse;
 import org.apache.cloudstack.context.CallContext;
+import org.apache.commons.lang3.StringUtils;
 
 import com.cloud.event.EventTypes;
 import com.cloud.exception.InvalidParameterValueException;
@@ -44,7 +45,6 @@ import com.cloud.network.rules.LoadBalancer;
 import com.cloud.region.ha.GlobalLoadBalancerRule;
 import com.cloud.region.ha.GlobalLoadBalancingRulesService;
 import com.cloud.user.Account;
-import com.cloud.utils.StringUtils;
 
 @APICommand(name = "assignToGlobalLoadBalancerRule",
             description = "Assign load balancer rule or list of load " + "balancer rules to a global load balancer rules.",
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/region/ha/gslb/RemoveFromGlobalLoadBalancerRuleCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/region/ha/gslb/RemoveFromGlobalLoadBalancerRuleCmd.java
index c514984..503e5a5 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/user/region/ha/gslb/RemoveFromGlobalLoadBalancerRuleCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/user/region/ha/gslb/RemoveFromGlobalLoadBalancerRuleCmd.java
@@ -33,13 +33,13 @@ import org.apache.cloudstack.api.response.FirewallRuleResponse;
 import org.apache.cloudstack.api.response.GlobalLoadBalancerResponse;
 import org.apache.cloudstack.api.response.SuccessResponse;
 import org.apache.cloudstack.context.CallContext;
+import org.apache.commons.lang3.StringUtils;
 
 import com.cloud.event.EventTypes;
 import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.region.ha.GlobalLoadBalancerRule;
 import com.cloud.region.ha.GlobalLoadBalancingRulesService;
 import com.cloud.user.Account;
-import com.cloud.utils.StringUtils;
 
 @APICommand(name = "removeFromGlobalLoadBalancerRule",
             description = "Removes a load balancer rule association with global load balancer rule",
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/resource/ListDetailOptionsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/resource/ListDetailOptionsCmd.java
index b7a4679..795b4d0 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/user/resource/ListDetailOptionsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/user/resource/ListDetailOptionsCmd.java
@@ -25,7 +25,7 @@ import org.apache.cloudstack.api.response.DetailOptionsResponse;
 import org.apache.cloudstack.context.CallContext;
 
 import com.cloud.server.ResourceTag;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 @APICommand(name = ListDetailOptionsCmd.APINAME,
         description = "Lists all possible details and their options for a resource type such as a VM or a template",
@@ -58,7 +58,7 @@ public class ListDetailOptionsCmd extends BaseCmd {
     }
 
     public String getResourceId() {
-        if (!Strings.isNullOrEmpty(resourceId)) {
+        if (StringUtils.isNotEmpty(resourceId)) {
             return resourceManagerUtil.getUuid(resourceId, getResourceType());
         }
         return null;
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/securitygroup/AuthorizeSecurityGroupEgressCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/securitygroup/AuthorizeSecurityGroupEgressCmd.java
index 79cb831..cfcb9ee 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/user/securitygroup/AuthorizeSecurityGroupEgressCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/user/securitygroup/AuthorizeSecurityGroupEgressCmd.java
@@ -38,12 +38,12 @@ import org.apache.cloudstack.api.response.ProjectResponse;
 import org.apache.cloudstack.api.response.SecurityGroupResponse;
 import org.apache.cloudstack.api.response.SecurityGroupRuleResponse;
 import org.apache.cloudstack.context.CallContext;
+import org.apache.commons.lang3.StringUtils;
 
 import com.cloud.event.EventTypes;
 import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.network.security.SecurityGroup;
 import com.cloud.network.security.SecurityRule;
-import com.cloud.utils.StringUtils;
 
 @APICommand(name = "authorizeSecurityGroupEgress", responseObject = SecurityGroupRuleResponse.class, description = "Authorizes a particular egress rule for this security group", since = "3.0.0", entityType = {SecurityGroup.class},
             requestHasSensitiveInfo = false,
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/securitygroup/AuthorizeSecurityGroupIngressCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/securitygroup/AuthorizeSecurityGroupIngressCmd.java
index 3b339e4..41abc46 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/user/securitygroup/AuthorizeSecurityGroupIngressCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/user/securitygroup/AuthorizeSecurityGroupIngressCmd.java
@@ -38,12 +38,12 @@ import org.apache.cloudstack.api.response.ProjectResponse;
 import org.apache.cloudstack.api.response.SecurityGroupResponse;
 import org.apache.cloudstack.api.response.SecurityGroupRuleResponse;
 import org.apache.cloudstack.context.CallContext;
+import org.apache.commons.lang3.StringUtils;
 
 import com.cloud.event.EventTypes;
 import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.network.security.SecurityGroup;
 import com.cloud.network.security.SecurityRule;
-import com.cloud.utils.StringUtils;
 
 @APICommand(name = "authorizeSecurityGroupIngress", responseObject = SecurityGroupRuleResponse.class, description = "Authorizes a particular ingress rule for this security group", entityType = {SecurityGroup.class},
             requestHasSensitiveInfo = false,
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/vm/DeployVMCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/vm/DeployVMCmd.java
index c87bc46..dab181e 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/user/vm/DeployVMCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/user/vm/DeployVMCmd.java
@@ -68,12 +68,11 @@ import com.cloud.network.Network.IpAddresses;
 import com.cloud.offering.DiskOffering;
 import com.cloud.template.VirtualMachineTemplate;
 import com.cloud.uservm.UserVm;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.net.Dhcp;
 import com.cloud.utils.net.NetUtils;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VmDetailConstants;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 @APICommand(name = "deployVirtualMachine", description = "Creates and automatically starts a virtual machine based on a service offering, disk offering, and template.", responseObject = UserVmResponse.class, responseView = ResponseView.Restricted, entityType = {VirtualMachine.class},
         requestHasSensitiveInfo = false, responseHasSensitiveInfo = true)
@@ -360,7 +359,7 @@ public class DeployVMCmd extends BaseAsyncCreateCustomIdCmd implements SecurityG
                 if (s_logger.isTraceEnabled()) {
                     s_logger.trace(String.format("nic, '%s', goes on net, '%s'", nic, networkUuid));
                 }
-                if (nic == null || Strings.isNullOrEmpty(networkUuid) || _entityMgr.findByUuid(Network.class, networkUuid) == null) {
+                if (nic == null || StringUtils.isEmpty(networkUuid) || _entityMgr.findByUuid(Network.class, networkUuid) == null) {
                     throw new InvalidParameterValueException(String.format("Network ID: %s for NIC ID: %s is invalid", networkUuid, nic));
                 }
                 map.put(nic, _entityMgr.findByUuid(Network.class, networkUuid).getId());
diff --git a/api/src/main/java/org/apache/cloudstack/api/response/OutOfBandManagementResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/OutOfBandManagementResponse.java
index c0282c8..3a8f5fb 100644
--- a/api/src/main/java/org/apache/cloudstack/api/response/OutOfBandManagementResponse.java
+++ b/api/src/main/java/org/apache/cloudstack/api/response/OutOfBandManagementResponse.java
@@ -18,12 +18,12 @@ package org.apache.cloudstack.api.response;
 
 import com.cloud.host.Host;
 import com.cloud.serializer.Param;
-import com.google.common.base.Strings;
 import com.google.gson.annotations.SerializedName;
 import org.apache.cloudstack.api.ApiConstants;
 import org.apache.cloudstack.api.BaseResponse;
 import org.apache.cloudstack.api.EntityReference;
 import org.apache.cloudstack.outofbandmanagement.OutOfBandManagement;
+import org.apache.commons.lang3.StringUtils;
 
 @EntityReference(value = Host.class)
 public class OutOfBandManagementResponse extends BaseResponse {
@@ -94,7 +94,7 @@ public class OutOfBandManagementResponse extends BaseResponse {
             this.setPort(outOfBandManagementConfig.getPort());
         }
         this.setUsername(outOfBandManagementConfig.getUsername());
-        if (!Strings.isNullOrEmpty(outOfBandManagementConfig.getPassword())) {
+        if (StringUtils.isNotEmpty(outOfBandManagementConfig.getPassword())) {
             this.setPassword(outOfBandManagementConfig.getPassword().substring(0, 1) + "****");
         }
     }
diff --git a/api/src/main/java/org/apache/cloudstack/backup/Backup.java b/api/src/main/java/org/apache/cloudstack/backup/Backup.java
index e6aa238..75c7ab4 100644
--- a/api/src/main/java/org/apache/cloudstack/backup/Backup.java
+++ b/api/src/main/java/org/apache/cloudstack/backup/Backup.java
@@ -20,9 +20,9 @@ package org.apache.cloudstack.backup;
 import org.apache.cloudstack.acl.ControlledEntity;
 import org.apache.cloudstack.api.Identity;
 import org.apache.cloudstack.api.InternalIdentity;
+import org.apache.commons.lang3.StringUtils;
 
 import com.cloud.storage.Volume;
-import com.cloud.utils.StringUtils;
 
 public interface Backup extends ControlledEntity, InternalIdentity, Identity {
 
diff --git a/client/src/main/java/org/apache/cloudstack/ServerDaemon.java b/client/src/main/java/org/apache/cloudstack/ServerDaemon.java
index 1b8e2f8..08f8566 100644
--- a/client/src/main/java/org/apache/cloudstack/ServerDaemon.java
+++ b/client/src/main/java/org/apache/cloudstack/ServerDaemon.java
@@ -52,7 +52,7 @@ import org.eclipse.jetty.webapp.WebAppContext;
 import org.apache.log4j.Logger;
 
 import com.cloud.utils.PropertiesUtil;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 /***
  * The ServerDaemon class implements the embedded server, it can be started either
@@ -221,7 +221,7 @@ public class ServerDaemon implements Daemon {
 
     private void createHttpsConnector(final HttpConfiguration httpConfig) {
         // Configure SSL
-        if (httpsEnable && !Strings.isNullOrEmpty(keystoreFile) && new File(keystoreFile).exists()) {
+        if (httpsEnable && StringUtils.isNotEmpty(keystoreFile) && new File(keystoreFile).exists()) {
             // SSL Context
             final SslContextFactory sslContextFactory = new SslContextFactory.Server();
 
@@ -256,7 +256,7 @@ public class ServerDaemon implements Daemon {
         gzipHandler.setCompressionLevel(9);
         gzipHandler.setHandler(webApp);
 
-        if (Strings.isNullOrEmpty(webAppLocation)) {
+        if (StringUtils.isEmpty(webAppLocation)) {
             webApp.setWar(getShadedWarUrl());
         } else {
             webApp.setWar(webAppLocation);
diff --git a/core/src/main/java/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java b/core/src/main/java/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java
index 9a55d3b..54b9d38 100644
--- a/core/src/main/java/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java
+++ b/core/src/main/java/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java
@@ -44,7 +44,7 @@ import org.apache.cloudstack.diagnostics.DiagnosticsCommand;
 import org.apache.cloudstack.diagnostics.PrepareFilesAnswer;
 import org.apache.cloudstack.diagnostics.PrepareFilesCommand;
 import org.apache.cloudstack.utils.security.KeyStoreUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.joda.time.Duration;
 
diff --git a/core/src/main/java/com/cloud/agent/transport/Request.java b/core/src/main/java/com/cloud/agent/transport/Request.java
index 79c3384..2880934 100644
--- a/core/src/main/java/com/cloud/agent/transport/Request.java
+++ b/core/src/main/java/com/cloud/agent/transport/Request.java
@@ -33,6 +33,8 @@ import java.util.zip.GZIPInputStream;
 import java.util.zip.GZIPOutputStream;
 
 import com.cloud.utils.HumanReadableJson;
+
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 
@@ -55,7 +57,6 @@ import com.cloud.exception.UnsupportedVersionException;
 import com.cloud.serializer.GsonHelper;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.exception.CloudRuntimeException;
 
 /**
@@ -465,7 +466,7 @@ public class Request {
             int i = 0;
             if (temp != null) {
                 while (i < temp.length) {
-                    temp[i] = StringUtils.cleanString(temp[i]);
+                    temp[i] = com.cloud.utils.StringUtils.cleanString(temp[i]);
                     i++;
                 }
                 List<String> stringList = new ArrayList<String>();
diff --git a/core/src/main/java/com/cloud/storage/template/OVAProcessor.java b/core/src/main/java/com/cloud/storage/template/OVAProcessor.java
index b5d78ac..f08ac58 100644
--- a/core/src/main/java/com/cloud/storage/template/OVAProcessor.java
+++ b/core/src/main/java/com/cloud/storage/template/OVAProcessor.java
@@ -36,7 +36,7 @@ import com.cloud.agent.api.to.deployasis.OVFVirtualHardwareItemTO;
 import com.cloud.agent.api.to.deployasis.OVFVirtualHardwareSectionTO;
 import com.cloud.agent.api.to.deployasis.OVFNetworkTO;
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
diff --git a/core/src/main/java/com/cloud/storage/template/S3TemplateDownloader.java b/core/src/main/java/com/cloud/storage/template/S3TemplateDownloader.java
index 9ece388..f214406 100644
--- a/core/src/main/java/com/cloud/storage/template/S3TemplateDownloader.java
+++ b/core/src/main/java/com/cloud/storage/template/S3TemplateDownloader.java
@@ -37,7 +37,7 @@ import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.URIException;
 import org.apache.commons.httpclient.methods.GetMethod;
 import org.apache.commons.httpclient.params.HttpMethodParams;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import java.io.BufferedInputStream;
@@ -46,7 +46,6 @@ import java.io.InputStream;
 import java.util.Date;
 
 import static com.cloud.utils.NumbersUtil.toHumanReadableSize;
-import static com.cloud.utils.StringUtils.join;
 import static java.util.Arrays.asList;
 
 /**
@@ -98,7 +97,7 @@ public class S3TemplateDownloader extends ManagedContextRunnable implements Temp
         this.fileExtension = StringUtils.substringAfterLast(StringUtils.substringAfterLast(downloadUrl, "/"), ".");
 
         // Calculate and set S3 Key.
-        this.s3Key = join(asList(installPath, StringUtils.substringAfterLast(downloadUrl, "/")), S3Utils.SEPARATOR);
+        this.s3Key = StringUtils.join(asList(installPath, StringUtils.substringAfterLast(downloadUrl, "/")), S3Utils.SEPARATOR);
 
         // Set proxy if available.
         HTTPUtils.setProxy(proxy, this.httpClient);
diff --git a/core/src/main/java/org/apache/cloudstack/ca/SetupKeystoreAnswer.java b/core/src/main/java/org/apache/cloudstack/ca/SetupKeystoreAnswer.java
index 16ddc96..5e48553 100644
--- a/core/src/main/java/org/apache/cloudstack/ca/SetupKeystoreAnswer.java
+++ b/core/src/main/java/org/apache/cloudstack/ca/SetupKeystoreAnswer.java
@@ -20,14 +20,14 @@
 package org.apache.cloudstack.ca;
 
 import com.cloud.agent.api.LogLevel;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public class SetupKeystoreAnswer extends SetupCertificateAnswer {
     @LogLevel(LogLevel.Log4jLevel.Off)
     private final String csr;
 
     public SetupKeystoreAnswer(final String csr) {
-        super(!Strings.isNullOrEmpty(csr));
+        super(StringUtils.isNotEmpty(csr));
         this.csr = csr;
     }
 
diff --git a/core/src/main/java/org/apache/cloudstack/diagnostics/DiagnosticsAnswer.java b/core/src/main/java/org/apache/cloudstack/diagnostics/DiagnosticsAnswer.java
index 006f043..8d56a4a 100644
--- a/core/src/main/java/org/apache/cloudstack/diagnostics/DiagnosticsAnswer.java
+++ b/core/src/main/java/org/apache/cloudstack/diagnostics/DiagnosticsAnswer.java
@@ -19,7 +19,7 @@ package org.apache.cloudstack.diagnostics;
 
 import com.cloud.agent.api.Answer;
 import com.cloud.utils.exception.CloudRuntimeException;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.cloudstack.api.ApiConstants;
 import org.apache.log4j.Logger;
 
@@ -35,7 +35,7 @@ public class DiagnosticsAnswer extends Answer {
 
     public Map<String, String> getExecutionDetails() {
         final Map<String, String> executionDetailsMap = new HashMap<>();
-        if (result == true && !Strings.isNullOrEmpty(details)) {
+        if (result == true && StringUtils.isNotEmpty(details)) {
             final String[] parseDetails = details.split("&&");
             if (parseDetails.length >= 3) {
                 executionDetailsMap.put(ApiConstants.STDOUT, parseDetails[0].trim());
diff --git a/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java b/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java
index c15edcf..2c48cda 100644
--- a/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java
+++ b/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java
@@ -120,7 +120,7 @@ import com.cloud.utils.nio.Link;
 import com.cloud.utils.nio.NioServer;
 import com.cloud.utils.nio.Task;
 import com.cloud.utils.time.InaccurateClock;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 /**
  * Implementation of the Agent Manager. This class controls the connection to the agents.
@@ -391,7 +391,7 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl
             }
         }
         String logcontextid = (String) MDC.get("logcontextid");
-        if (!Strings.isNullOrEmpty(logcontextid)) {
+        if (StringUtils.isNotEmpty(logcontextid)) {
             cmd.setContextParam("logid", logcontextid);
         }
     }
@@ -1086,7 +1086,7 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl
             String lbAlgorithm = null;
             if (startup != null && startup.length > 0) {
                 final String agentMSHosts = startup[0].getMsHostList();
-                if (!Strings.isNullOrEmpty(agentMSHosts)) {
+                if (StringUtils.isNotEmpty(agentMSHosts)) {
                     String[] msHosts = agentMSHosts.split("@");
                     if (msHosts.length > 1) {
                         lbAlgorithm = msHosts[1];
diff --git a/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java
index 1bba582..72d2e3d 100755
--- a/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -251,7 +251,6 @@ import com.cloud.vm.dao.VMInstanceDao;
 import com.cloud.vm.snapshot.VMSnapshotManager;
 import com.cloud.vm.snapshot.VMSnapshotVO;
 import com.cloud.vm.snapshot.dao.VMSnapshotDao;
-import com.google.common.base.Strings;
 
 import static com.cloud.configuration.ConfigurationManagerImpl.MIGRATE_VM_ACROSS_CLUSTERS;
 
@@ -1006,7 +1005,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
 
     private void setupAgentSecurity(final Host vmHost, final Map<String, String> sshAccessDetails, final VirtualMachine vm) throws AgentUnavailableException, OperationTimedoutException {
         final String csr = caManager.generateKeyStoreAndCsr(vmHost, sshAccessDetails);
-        if (!Strings.isNullOrEmpty(csr)) {
+        if (org.apache.commons.lang3.StringUtils.isNotEmpty(csr)) {
             final Map<String, String> ipAddressDetails = new HashMap<>(sshAccessDetails);
             ipAddressDetails.remove(NetworkElementCommand.ROUTER_NAME);
             final Certificate certificate = caManager.issueCertificate(csr, Arrays.asList(vm.getHostName(), vm.getInstanceName()),
@@ -1536,7 +1535,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
             if (disk.getType() != Volume.Type.ISO) {
                 final VolumeObjectTO vol = (VolumeObjectTO)disk.getData();
                 final VolumeVO volume = _volsDao.findById(vol.getId());
-                if (vmSpec.getDeployAsIsInfo() != null && StringUtils.isNotBlank(vol.getPath())) {
+                if (vmSpec.getDeployAsIsInfo() != null && org.apache.commons.lang3.StringUtils.isNotBlank(vol.getPath())) {
                     volume.setPath(vol.getPath());
                     _volsDao.update(volume.getId(), volume);
                 }
diff --git a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
index f6e80f3..c2f08c8 100644
--- a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
+++ b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
@@ -16,8 +16,6 @@
 // under the License.
 package org.apache.cloudstack.engine.orchestration;
 
-import static org.apache.commons.lang.StringUtils.isNotBlank;
-
 import java.net.URI;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -200,7 +198,6 @@ import com.cloud.user.User;
 import com.cloud.user.dao.AccountDao;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.UuidUtils;
 import com.cloud.utils.component.AdapterBase;
 import com.cloud.utils.component.ManagerBase;
@@ -245,7 +242,7 @@ import com.cloud.vm.dao.NicSecondaryIpDao;
 import com.cloud.vm.dao.NicSecondaryIpVO;
 import com.cloud.vm.dao.UserVmDao;
 import com.cloud.vm.dao.VMInstanceDao;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 /**
  * NetworkManagerImpl implements NetworkManager.
@@ -642,10 +639,10 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
     }
 
     private void updateRouterIpInNetworkDetails(Long networkId, String routerIp, String routerIpv6) {
-        if (isNotBlank(routerIp)) {
+        if (StringUtils.isNotBlank(routerIp)) {
             networkDetailsDao.addDetail(networkId, ApiConstants.ROUTER_IP, routerIp, true);
         }
-        if (isNotBlank(routerIpv6)) {
+        if (StringUtils.isNotBlank(routerIpv6)) {
             networkDetailsDao.addDetail(networkId, ApiConstants.ROUTER_IPV6, routerIpv6, true);
         }
     }
@@ -2272,8 +2269,8 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
 
         final NetworkVO network = _networksDao.findById(nic.getNetworkId());
         if (network != null && network.getTrafficType() == TrafficType.Guest) {
-            final String nicIp = Strings.isNullOrEmpty(nic.getIPv4Address()) ? nic.getIPv6Address() : nic.getIPv4Address();
-            if (!Strings.isNullOrEmpty(nicIp)) {
+            final String nicIp = StringUtils.isEmpty(nic.getIPv4Address()) ? nic.getIPv6Address() : nic.getIPv4Address();
+            if (StringUtils.isNotEmpty(nicIp)) {
                 NicProfile nicProfile = new NicProfile(nic.getIPv4Address(), nic.getIPv6Address(), nic.getMacAddress());
                 nicProfile.setId(nic.getId());
                 cleanupNicDhcpDnsEntry(network, vm, nicProfile);
@@ -2463,7 +2460,7 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
 
         boolean ipv6 = false;
 
-        if (StringUtils.isNotBlank(ip6Gateway) && StringUtils.isNotBlank(ip6Cidr)) {
+        if (StringUtils.isNoneBlank(ip6Gateway, ip6Cidr)) {
             ipv6 = true;
         }
         // Validate zone
@@ -2542,7 +2539,7 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
         if (vlanSpecified) {
             URI uri = encodeVlanIdIntoBroadcastUri(vlanId, pNtwk);
             // Aux: generate secondary URI for secondary VLAN ID (if provided) for performing checks
-            URI secondaryUri = isNotBlank(isolatedPvlan) ? BroadcastDomainType.fromString(isolatedPvlan) : null;
+            URI secondaryUri = StringUtils.isNotBlank(isolatedPvlan) ? BroadcastDomainType.fromString(isolatedPvlan) : null;
             //don't allow to specify vlan tag used by physical network for dynamic vlan allocation
             if (!(bypassVlanOverlapCheck && ntwkOff.getGuestType() == GuestType.Shared) && _dcDao.findVnet(zoneId, pNtwk.getId(), BroadcastDomainType.getValue(uri)).size() > 0) {
                 throw new InvalidParameterValueException("The VLAN tag to use for new guest network, " + vlanId + " is already being used for dynamic vlan allocation for the guest network in zone "
@@ -2681,7 +2678,7 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
                     userNetwork.setGateway(gateway);
                 }
 
-                if (StringUtils.isNotBlank(ip6Gateway) && StringUtils.isNotBlank(ip6Cidr)) {
+                if (StringUtils.isNoneBlank(ip6Gateway, ip6Cidr)) {
                     userNetwork.setIp6Cidr(ip6Cidr);
                     userNetwork.setIp6Gateway(ip6Gateway);
                 }
@@ -2690,11 +2687,11 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
                     userNetwork.setExternalId(externalId);
                 }
 
-                if (isNotBlank(routerIp)) {
+                if (StringUtils.isNotBlank(routerIp)) {
                     userNetwork.setRouterIp(routerIp);
                 }
 
-                if (isNotBlank(routerIpv6)) {
+                if (StringUtils.isNotBlank(routerIpv6)) {
                     userNetwork.setRouterIpv6(routerIpv6);
                 }
 
@@ -4155,11 +4152,11 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
             if (network.getTrafficType() == Networks.TrafficType.Management) {
                 privateIpAddress = address;
             }
-            if (network.getTrafficType() != null && !Strings.isNullOrEmpty(address)) {
+            if (network.getTrafficType() != null && StringUtils.isNotEmpty(address)) {
                 accessDetails.put(network.getTrafficType().name(), address);
             }
         }
-        if (privateIpAddress != null && Strings.isNullOrEmpty(accessDetails.get(NetworkElementCommand.ROUTER_IP))) {
+        if (privateIpAddress != null && StringUtils.isEmpty(accessDetails.get(NetworkElementCommand.ROUTER_IP))) {
             accessDetails.put(NetworkElementCommand.ROUTER_IP,  privateIpAddress);
         }
         return accessDetails;
@@ -4299,7 +4296,7 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
             throws ConcurrentOperationException, InsufficientVirtualNetworkCapacityException, InsufficientAddressCapacityException {
         s_logger.debug("Allocating nic for vm " + vm.getUuid() + " in network " + network + " during import");
         String guestIp = null;
-        if (ipAddresses != null && !Strings.isNullOrEmpty(ipAddresses.getIp4Address())) {
+        if (ipAddresses != null && StringUtils.isNotEmpty(ipAddresses.getIp4Address())) {
             if (ipAddresses.getIp4Address().equals("auto")) {
                 ipAddresses.setIp4Address(null);
             }
@@ -4331,10 +4328,10 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
                 NicVO vo = new NicVO(network.getGuruName(), vm.getId(), network.getId(), vm.getType());
                 vo.setMacAddress(macAddress);
                 vo.setAddressFormat(Networks.AddressFormat.Ip4);
-                if (NetUtils.isValidIp4(finalGuestIp) && !Strings.isNullOrEmpty(network.getGateway())) {
+                if (NetUtils.isValidIp4(finalGuestIp) && StringUtils.isNotEmpty(network.getGateway())) {
                     vo.setIPv4Address(finalGuestIp);
                     vo.setIPv4Gateway(network.getGateway());
-                    if (!Strings.isNullOrEmpty(network.getCidr())) {
+                    if (StringUtils.isNotEmpty(network.getCidr())) {
                         vo.setIPv4Netmask(NetUtils.cidr2Netmask(network.getCidr()));
                     }
                 }
diff --git a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java
index 3b93977..8bba188 100644
--- a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java
+++ b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java
@@ -36,7 +36,6 @@ import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
 import com.cloud.agent.api.to.DatadiskTO;
-import com.cloud.utils.StringUtils;
 import com.cloud.vm.SecondaryStorageVmVO;
 import com.cloud.vm.UserVmDetailVO;
 import com.cloud.vm.VMInstanceVO;
@@ -85,6 +84,7 @@ import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
 import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao;
 import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
 import org.apache.commons.collections.MapUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.log4j.Logger;
 
diff --git a/engine/schema/src/main/java/com/cloud/host/HostVO.java b/engine/schema/src/main/java/com/cloud/host/HostVO.java
index 776e48c..5757e07 100644
--- a/engine/schema/src/main/java/com/cloud/host/HostVO.java
+++ b/engine/schema/src/main/java/com/cloud/host/HostVO.java
@@ -46,7 +46,7 @@ import com.cloud.storage.Storage.StoragePoolType;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.db.GenericDao;
 import java.util.Arrays;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 @Entity
 @Table(name = "host")
diff --git a/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplatePoolDaoImpl.java b/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplatePoolDaoImpl.java
index c9bd769..479e02e 100644
--- a/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplatePoolDaoImpl.java
+++ b/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplatePoolDaoImpl.java
@@ -28,7 +28,7 @@ import javax.inject.Inject;
 import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectInStore;
 import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
 import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
diff --git a/engine/schema/src/main/java/com/cloud/upgrade/DatabaseUpgradeChecker.java b/engine/schema/src/main/java/com/cloud/upgrade/DatabaseUpgradeChecker.java
index 604b310..d251305 100644
--- a/engine/schema/src/main/java/com/cloud/upgrade/DatabaseUpgradeChecker.java
+++ b/engine/schema/src/main/java/com/cloud/upgrade/DatabaseUpgradeChecker.java
@@ -33,7 +33,7 @@ import com.cloud.upgrade.dao.Upgrade41510to41520;
 import com.cloud.upgrade.dao.Upgrade41600to41610;
 import com.cloud.upgrade.dao.Upgrade41610to41700;
 import org.apache.cloudstack.utils.CloudStackVersion;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.upgrade.dao.DbUpgrade;
diff --git a/engine/schema/src/main/java/com/cloud/usage/dao/UsageVMSnapshotDaoImpl.java b/engine/schema/src/main/java/com/cloud/usage/dao/UsageVMSnapshotDaoImpl.java
index 337d05e..ef8b3b9 100644
--- a/engine/schema/src/main/java/com/cloud/usage/dao/UsageVMSnapshotDaoImpl.java
+++ b/engine/schema/src/main/java/com/cloud/usage/dao/UsageVMSnapshotDaoImpl.java
@@ -25,7 +25,7 @@ import java.util.List;
 import java.util.TimeZone;
 
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
diff --git a/engine/schema/src/main/java/com/cloud/usage/dao/UsageVMSnapshotOnPrimaryDaoImpl.java b/engine/schema/src/main/java/com/cloud/usage/dao/UsageVMSnapshotOnPrimaryDaoImpl.java
index 5a5d6f9..5374bdb 100644
--- a/engine/schema/src/main/java/com/cloud/usage/dao/UsageVMSnapshotOnPrimaryDaoImpl.java
+++ b/engine/schema/src/main/java/com/cloud/usage/dao/UsageVMSnapshotOnPrimaryDaoImpl.java
@@ -25,7 +25,7 @@ import java.util.List;
 import java.util.TimeZone;
 
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
diff --git a/engine/schema/src/main/java/com/cloud/user/UserAccountVO.java b/engine/schema/src/main/java/com/cloud/user/UserAccountVO.java
index 2ad2ae07..dfebb3c 100644
--- a/engine/schema/src/main/java/com/cloud/user/UserAccountVO.java
+++ b/engine/schema/src/main/java/com/cloud/user/UserAccountVO.java
@@ -33,7 +33,7 @@ import org.apache.cloudstack.api.InternalIdentity;
 
 import com.cloud.utils.db.Encrypt;
 import com.cloud.utils.db.GenericDao;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 @Entity
 @Table(name = "user")
@@ -258,7 +258,7 @@ public class UserAccountVO implements UserAccount, InternalIdentity {
 
     @Override
     public String getTimezone() {
-        if (Strings.isNullOrEmpty(timezone)) {
+        if (StringUtils.isEmpty(timezone)) {
             return "UTC";
         }
         return timezone;
diff --git a/engine/schema/src/main/java/com/cloud/user/UserVO.java b/engine/schema/src/main/java/com/cloud/user/UserVO.java
index 05655bf..7ac4698c 100644
--- a/engine/schema/src/main/java/com/cloud/user/UserVO.java
+++ b/engine/schema/src/main/java/com/cloud/user/UserVO.java
@@ -34,7 +34,7 @@ import org.apache.cloudstack.api.InternalIdentity;
 import com.cloud.user.Account.State;
 import com.cloud.utils.db.Encrypt;
 import com.cloud.utils.db.GenericDao;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 /**
  * A bean representing a user
@@ -252,7 +252,7 @@ public class UserVO implements User, Identity, InternalIdentity {
 
     @Override
     public String getTimezone() {
-        if (Strings.isNullOrEmpty(timezone)) {
+        if (StringUtils.isEmpty(timezone)) {
             return "UTC";
         }
         return timezone;
diff --git a/engine/schema/src/main/java/com/cloud/user/dao/AccountDaoImpl.java b/engine/schema/src/main/java/com/cloud/user/dao/AccountDaoImpl.java
index 81bd545..a1e0d54 100644
--- a/engine/schema/src/main/java/com/cloud/user/dao/AccountDaoImpl.java
+++ b/engine/schema/src/main/java/com/cloud/user/dao/AccountDaoImpl.java
@@ -29,7 +29,7 @@ import com.cloud.utils.db.GenericSearchBuilder;
 import com.cloud.utils.db.SearchBuilder;
 import com.cloud.utils.db.SearchCriteria;
 import com.cloud.utils.db.SearchCriteria.Op;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import com.cloud.utils.db.TransactionLegacy;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
@@ -164,7 +164,7 @@ public class AccountDaoImpl extends GenericDaoBase<AccountVO, Long> implements A
     @Override
     public Pair<List<AccountVO>, Integer> findAccountsLike(String accountName, Filter filter) {
         SearchCriteria<AccountVO> sc = createSearchCriteria();
-        if (!Strings.isNullOrEmpty(accountName)) {
+        if (StringUtils.isNotEmpty(accountName)) {
             sc.addAnd("accountName", SearchCriteria.Op.LIKE, "%" + accountName + "%");
         }
         return searchAndCount(sc, filter);
diff --git a/engine/schema/src/main/java/com/cloud/vm/VMInstanceVO.java b/engine/schema/src/main/java/com/cloud/vm/VMInstanceVO.java
index 886933a..b1debd0 100644
--- a/engine/schema/src/main/java/com/cloud/vm/VMInstanceVO.java
+++ b/engine/schema/src/main/java/com/cloud/vm/VMInstanceVO.java
@@ -50,7 +50,7 @@ import com.cloud.utils.db.GenericDao;
 import com.cloud.utils.db.StateMachine;
 import com.cloud.utils.fsm.FiniteStateObject;
 import com.cloud.vm.VirtualMachine.State;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import com.google.gson.Gson;
 
 @Entity
@@ -619,7 +619,7 @@ public class VMInstanceVO implements VirtualMachine, FiniteStateObject<State, Vi
 
     @Override
     public List<Backup.VolumeInfo> getBackupVolumeList() {
-        if (Strings.isNullOrEmpty(this.backupVolumes)) {
+        if (StringUtils.isEmpty(this.backupVolumes)) {
             return Collections.emptyList();
         }
         return Arrays.asList(new Gson().fromJson(this.backupVolumes, Backup.VolumeInfo[].class));
diff --git a/engine/schema/src/main/java/com/cloud/vm/dao/NicSecondaryIpDaoImpl.java b/engine/schema/src/main/java/com/cloud/vm/dao/NicSecondaryIpDaoImpl.java
index ba3a5c7..a56d35d 100644
--- a/engine/schema/src/main/java/com/cloud/vm/dao/NicSecondaryIpDaoImpl.java
+++ b/engine/schema/src/main/java/com/cloud/vm/dao/NicSecondaryIpDaoImpl.java
@@ -19,9 +19,9 @@ package com.cloud.vm.dao;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.db.GenericDaoBase;
 import com.cloud.utils.db.GenericSearchBuilder;
 import com.cloud.utils.db.SearchBuilder;
diff --git a/engine/schema/src/main/java/org/apache/cloudstack/acl/dao/ProjectRoleDaoImpl.java b/engine/schema/src/main/java/org/apache/cloudstack/acl/dao/ProjectRoleDaoImpl.java
index b153826..b88e1b5 100644
--- a/engine/schema/src/main/java/org/apache/cloudstack/acl/dao/ProjectRoleDaoImpl.java
+++ b/engine/schema/src/main/java/org/apache/cloudstack/acl/dao/ProjectRoleDaoImpl.java
@@ -24,7 +24,7 @@ import org.apache.cloudstack.acl.ProjectRoleVO;
 import com.cloud.utils.db.GenericDaoBase;
 import com.cloud.utils.db.SearchBuilder;
 import com.cloud.utils.db.SearchCriteria;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public class ProjectRoleDaoImpl extends GenericDaoBase<ProjectRoleVO, Long>  implements ProjectRoleDao{
     private final SearchBuilder<ProjectRoleVO>  ProjectRoleSearch;
@@ -41,7 +41,7 @@ public class ProjectRoleDaoImpl extends GenericDaoBase<ProjectRoleVO, Long>  imp
     @Override
     public List<ProjectRoleVO> findByName(String name, Long projectId) {
         SearchCriteria<ProjectRoleVO> sc = ProjectRoleSearch.create();
-        if (!Strings.isNullOrEmpty(name)) {
+        if (StringUtils.isNotEmpty(name)) {
             sc.setParameters("name", "%" + name + "%");
         }
         if (projectId != null) {
diff --git a/engine/schema/src/main/java/org/apache/cloudstack/annotation/dao/AnnotationDaoImpl.java b/engine/schema/src/main/java/org/apache/cloudstack/annotation/dao/AnnotationDaoImpl.java
index 0bb47a5..3260789 100644
--- a/engine/schema/src/main/java/org/apache/cloudstack/annotation/dao/AnnotationDaoImpl.java
+++ b/engine/schema/src/main/java/org/apache/cloudstack/annotation/dao/AnnotationDaoImpl.java
@@ -24,7 +24,7 @@ import org.apache.cloudstack.acl.RoleType;
 import org.apache.cloudstack.annotation.AnnotationService.EntityType;
 import org.apache.cloudstack.annotation.AnnotationVO;
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
@@ -93,8 +93,7 @@ public class AnnotationDaoImpl extends GenericDaoBase<AnnotationVO, Long> implem
         if (StringUtils.isNotBlank(userUuid)) {
             sc.addAnd("userUuid", SearchCriteria.Op.EQ, userUuid);
         }
-        if (StringUtils.isNotBlank(callingUserUuid) && StringUtils.isNotBlank(annotationFilter) &&
-            annotationFilter.equalsIgnoreCase("self")) {
+        if (StringUtils.isNoneBlank(callingUserUuid, annotationFilter) && annotationFilter.equalsIgnoreCase("self")) {
             sc.addAnd("userUuid", SearchCriteria.Op.EQ, callingUserUuid);
         }
         if (!isCallerAdmin) {
diff --git a/engine/storage/configdrive/src/main/java/org/apache/cloudstack/storage/configdrive/ConfigDriveBuilder.java b/engine/storage/configdrive/src/main/java/org/apache/cloudstack/storage/configdrive/ConfigDriveBuilder.java
index 0675b43..a76bbd9 100644
--- a/engine/storage/configdrive/src/main/java/org/apache/cloudstack/storage/configdrive/ConfigDriveBuilder.java
+++ b/engine/storage/configdrive/src/main/java/org/apache/cloudstack/storage/configdrive/ConfigDriveBuilder.java
@@ -33,7 +33,7 @@ import java.util.List;
 
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.joda.time.Duration;
 
diff --git a/engine/storage/configdrive/src/test/java/org/apache/cloudstack/storage/configdrive/ConfigDriveBuilderTest.java b/engine/storage/configdrive/src/test/java/org/apache/cloudstack/storage/configdrive/ConfigDriveBuilderTest.java
index 50cab35..c1bce01 100644
--- a/engine/storage/configdrive/src/test/java/org/apache/cloudstack/storage/configdrive/ConfigDriveBuilderTest.java
+++ b/engine/storage/configdrive/src/test/java/org/apache/cloudstack/storage/configdrive/ConfigDriveBuilderTest.java
@@ -31,7 +31,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/DataMotionServiceImpl.java b/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/DataMotionServiceImpl.java
index a62921c..6a352a3 100644
--- a/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/DataMotionServiceImpl.java
+++ b/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/DataMotionServiceImpl.java
@@ -34,6 +34,7 @@ import org.apache.cloudstack.engine.subsystem.api.storage.StorageStrategyFactory
 import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo;
 import org.apache.cloudstack.framework.async.AsyncCompletionCallback;
 import org.apache.cloudstack.storage.command.CopyCmdAnswer;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
@@ -42,7 +43,6 @@ import com.cloud.host.Host;
 import com.cloud.storage.Volume;
 import com.cloud.storage.VolumeVO;
 import com.cloud.storage.dao.VolumeDao;
-import com.cloud.utils.StringUtils;
 
 
 @Component
diff --git a/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/KvmNonManagedStorageDataMotionStrategy.java b/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/KvmNonManagedStorageDataMotionStrategy.java
index 237be6c..8aaceee 100644
--- a/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/KvmNonManagedStorageDataMotionStrategy.java
+++ b/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/KvmNonManagedStorageDataMotionStrategy.java
@@ -35,7 +35,7 @@ import org.apache.cloudstack.storage.datastore.DataStoreManagerImpl;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
 import org.apache.cloudstack.storage.to.TemplateObjectTO;
 import org.apache.commons.collections.MapUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.agent.api.Answer;
diff --git a/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/StorageSystemDataMotionStrategy.java b/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/StorageSystemDataMotionStrategy.java
index aee1f75..4363710 100644
--- a/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/StorageSystemDataMotionStrategy.java
+++ b/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/StorageSystemDataMotionStrategy.java
@@ -69,7 +69,7 @@ import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
 import org.apache.cloudstack.storage.to.PrimaryDataStoreTO;
 import org.apache.cloudstack.storage.to.VolumeObjectTO;
 import org.apache.commons.collections.MapUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.agent.AgentManager;
@@ -1047,7 +1047,7 @@ public class StorageSystemDataMotionStrategy implements DataMotionStrategy {
                 }
 
                 if (copyCmdAnswer == null || !copyCmdAnswer.getResult()) {
-                    if (copyCmdAnswer != null && !StringUtils.isEmpty(copyCmdAnswer.getDetails())) {
+                    if (copyCmdAnswer != null && StringUtils.isNotEmpty(copyCmdAnswer.getDetails())) {
                         errMsg = copyCmdAnswer.getDetails();
 
                         if (needCache) {
@@ -1282,7 +1282,7 @@ public class StorageSystemDataMotionStrategy implements DataMotionStrategy {
             }
 
             if (copyCmdAnswer == null || !copyCmdAnswer.getResult()) {
-                if (copyCmdAnswer != null && !StringUtils.isEmpty(copyCmdAnswer.getDetails())) {
+                if (copyCmdAnswer != null && StringUtils.isNotEmpty(copyCmdAnswer.getDetails())) {
                     throw new CloudRuntimeException(copyCmdAnswer.getDetails());
                 }
                 else {
@@ -1610,7 +1610,7 @@ public class StorageSystemDataMotionStrategy implements DataMotionStrategy {
             copyCmdAnswer = copyImageToVolume(srcVolumeInfo, destVolumeInfo, hostVO);
 
             if (copyCmdAnswer == null || !copyCmdAnswer.getResult()) {
-                if (copyCmdAnswer != null && !StringUtils.isEmpty(copyCmdAnswer.getDetails())) {
+                if (copyCmdAnswer != null && StringUtils.isNotEmpty(copyCmdAnswer.getDetails())) {
                     throw new CloudRuntimeException(copyCmdAnswer.getDetails());
                 }
                 else {
@@ -2396,7 +2396,7 @@ public class StorageSystemDataMotionStrategy implements DataMotionStrategy {
                 handleQualityOfServiceForVolumeMigration(volumeInfo, PrimaryDataStoreDriver.QualityOfServiceState.NO_MIGRATION);
 
                 if (copyCmdAnswer == null || !copyCmdAnswer.getResult()) {
-                    if (copyCmdAnswer != null && !StringUtils.isEmpty(copyCmdAnswer.getDetails())) {
+                    if (copyCmdAnswer != null && StringUtils.isNotEmpty(copyCmdAnswer.getDetails())) {
                         errMsg = copyCmdAnswer.getDetails();
                     }
                     else {
@@ -2711,7 +2711,7 @@ public class StorageSystemDataMotionStrategy implements DataMotionStrategy {
             MigrateVolumeAnswer migrateVolumeAnswer = (MigrateVolumeAnswer)agentManager.send(hostVO.getId(), migrateVolumeCommand);
 
             if (migrateVolumeAnswer == null || !migrateVolumeAnswer.getResult()) {
-                if (migrateVolumeAnswer != null && !StringUtils.isEmpty(migrateVolumeAnswer.getDetails())) {
+                if (migrateVolumeAnswer != null && StringUtils.isNotEmpty(migrateVolumeAnswer.getDetails())) {
                     throw new CloudRuntimeException(migrateVolumeAnswer.getDetails());
                 }
                 else {
@@ -2779,7 +2779,7 @@ public class StorageSystemDataMotionStrategy implements DataMotionStrategy {
             CopyVolumeAnswer copyVolumeAnswer = (CopyVolumeAnswer)agentManager.send(hostVO.getId(), copyVolumeCommand);
 
             if (copyVolumeAnswer == null || !copyVolumeAnswer.getResult()) {
-                if (copyVolumeAnswer != null && !StringUtils.isEmpty(copyVolumeAnswer.getDetails())) {
+                if (copyVolumeAnswer != null && StringUtils.isNotEmpty(copyVolumeAnswer.getDetails())) {
                     throw new CloudRuntimeException(copyVolumeAnswer.getDetails());
                 }
                 else {
diff --git a/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateDataFactoryImpl.java b/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateDataFactoryImpl.java
index 155452d..492ec74 100644
--- a/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateDataFactoryImpl.java
+++ b/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateDataFactoryImpl.java
@@ -24,7 +24,6 @@ import java.util.List;
 import javax.inject.Inject;
 
 import com.cloud.hypervisor.Hypervisor;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.exception.CloudRuntimeException;
 import org.apache.cloudstack.direct.download.DirectDownloadManager;
 import org.apache.cloudstack.engine.subsystem.api.storage.DataObject;
@@ -37,6 +36,7 @@ import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
 import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao;
 import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
 import org.apache.cloudstack.storage.image.store.TemplateObject;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
diff --git a/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java b/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
index ef0ef7e..4aefccc 100644
--- a/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
+++ b/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
@@ -66,7 +66,7 @@ import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
 import org.apache.cloudstack.storage.image.datastore.ImageStoreEntity;
 import org.apache.cloudstack.storage.image.store.TemplateObject;
 import org.apache.cloudstack.storage.to.TemplateObjectTO;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
@@ -111,7 +111,6 @@ import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.fsm.NoTransitionException;
 import com.cloud.utils.fsm.StateMachine2;
 import com.cloud.vm.VmDetailConstants;
-import com.google.common.base.Strings;
 
 @Component
 public class TemplateServiceImpl implements TemplateService {
@@ -765,15 +764,15 @@ public class TemplateServiceImpl implements TemplateService {
                 if (!deployAsIs) {
                     if (!diskTemplate.isBootable()) {
                         createChildDataDiskTemplate(diskTemplate, templateVO, parentTemplate, imageStore, diskCount++);
-                        if (!diskTemplate.isIso() && Strings.isNullOrEmpty(details.get(VmDetailConstants.DATA_DISK_CONTROLLER))){
+                        if (!diskTemplate.isIso() && StringUtils.isEmpty(details.get(VmDetailConstants.DATA_DISK_CONTROLLER))){
                             details.put(VmDetailConstants.DATA_DISK_CONTROLLER, getOvaDiskControllerDetails(diskTemplate, false));
                             details.put(VmDetailConstants.DATA_DISK_CONTROLLER + diskTemplate.getDiskId(), getOvaDiskControllerDetails(diskTemplate, false));
                         }
                     } else {
                         finalizeParentTemplate(diskTemplate, templateVO, parentTemplate, imageStore, diskCount++);
-                        if (Strings.isNullOrEmpty(VmDetailConstants.ROOT_DISK_CONTROLLER)) {
+                        if (StringUtils.isEmpty(VmDetailConstants.ROOT_DISK_CONTROLLER)) {
                             final String rootDiskController = getOvaDiskControllerDetails(diskTemplate, true);
-                            if (!Strings.isNullOrEmpty(rootDiskController)) {
+                            if (StringUtils.isNotEmpty(rootDiskController)) {
                                 details.put(VmDetailConstants.ROOT_DISK_CONTROLLER, rootDiskController);
                             }
                         }
diff --git a/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/store/TemplateObject.java b/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/store/TemplateObject.java
index c8b78aa..0bcfad4 100644
--- a/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/store/TemplateObject.java
+++ b/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/store/TemplateObject.java
@@ -54,7 +54,7 @@ import com.cloud.utils.component.ComponentContext;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.fsm.NoTransitionException;
 
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 @SuppressWarnings("serial")
 public class TemplateObject implements TemplateInfo {
@@ -251,7 +251,7 @@ public class TemplateObject implements TemplateInfo {
      * In the case of managed storage, the install path may already be specified (by the storage plug-in), so do not overwrite it.
      */
     private void setInstallPathIfNeeded(TemplateObjectTO template, VMTemplateStoragePoolVO templatePoolRef) {
-        if (Strings.isNullOrEmpty(templatePoolRef.getInstallPath())) {
+        if (StringUtils.isEmpty(templatePoolRef.getInstallPath())) {
             templatePoolRef.setInstallPath(template.getPath());
         }
     }
@@ -260,7 +260,7 @@ public class TemplateObject implements TemplateInfo {
      * In the case of managed storage, the local download path may already be specified (by the storage plug-in), so do not overwrite it.
      */
     private void setDownloadPathIfNeeded(TemplateObjectTO template, VMTemplateStoragePoolVO templatePoolRef) {
-        if (Strings.isNullOrEmpty(templatePoolRef.getLocalDownloadPath())) {
+        if (StringUtils.isEmpty(templatePoolRef.getLocalDownloadPath())) {
             templatePoolRef.setLocalDownloadPath(template.getPath());
         }
     }
diff --git a/engine/storage/src/main/java/org/apache/cloudstack/storage/image/deployasis/DeployAsIsHelperImpl.java b/engine/storage/src/main/java/org/apache/cloudstack/storage/image/deployasis/DeployAsIsHelperImpl.java
index 9d26da8..2c26252 100644
--- a/engine/storage/src/main/java/org/apache/cloudstack/storage/image/deployasis/DeployAsIsHelperImpl.java
+++ b/engine/storage/src/main/java/org/apache/cloudstack/storage/image/deployasis/DeployAsIsHelperImpl.java
@@ -56,7 +56,7 @@ import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao;
 import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
@@ -172,7 +172,7 @@ public class DeployAsIsHelperImpl implements DeployAsIsHelper {
                 GuestOSHypervisorVO mapping = guestOsMappings.get(0);
                 guestOsId = mapping.getGuestOsId();
             } else {
-                if (!StringUtils.isEmpty(guestOsDescription)) {
+                if (StringUtils.isNotEmpty(guestOsDescription)) {
                     for (GuestOSHypervisorVO guestOSHypervisorVO : guestOsMappings) {
                         GuestOSVO guestOSVO = guestOSDao.findById(guestOSHypervisorVO.getGuestOsId());
                         if (guestOsDescription.equalsIgnoreCase(guestOSVO.getDisplayName())) {
diff --git a/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/datastore/provider/DefaultHostListener.java b/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/datastore/provider/DefaultHostListener.java
index 30cd7ac..09014eb 100644
--- a/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/datastore/provider/DefaultHostListener.java
+++ b/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/datastore/provider/DefaultHostListener.java
@@ -38,7 +38,7 @@ import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailVO;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import javax.inject.Inject;
diff --git a/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeObject.java b/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeObject.java
index 705d812..09f20ab 100644
--- a/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeObject.java
+++ b/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeObject.java
@@ -42,7 +42,7 @@ import org.apache.cloudstack.storage.datastore.ObjectInDataStoreManager;
 import org.apache.cloudstack.storage.datastore.db.VolumeDataStoreDao;
 import org.apache.cloudstack.storage.datastore.db.VolumeDataStoreVO;
 import org.apache.cloudstack.storage.to.VolumeObjectTO;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.agent.api.Answer;
diff --git a/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java b/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
index 9252684..fa01058 100644
--- a/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
+++ b/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
@@ -132,7 +132,7 @@ import com.cloud.utils.db.DB;
 import com.cloud.utils.db.GlobalLock;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.vm.VirtualMachine;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 import static com.cloud.storage.resource.StorageProcessor.REQUEST_TEMPLATE_RELOAD;
 import java.util.concurrent.ExecutionException;
@@ -2113,7 +2113,7 @@ public class VolumeServiceImpl implements VolumeService {
                 destPoolSystemId = destPoolSystemIdDetail.getValue();
             }
 
-            if (Strings.isNullOrEmpty(srcPoolSystemId) || Strings.isNullOrEmpty(destPoolSystemId)) {
+            if (StringUtils.isAnyEmpty(srcPoolSystemId, destPoolSystemId)) {
                 s_logger.warn("PowerFlex src pool: " + srcDataStore.getId() + " or dest pool: " + destDataStore.getId() +
                         " storage instance details are not available");
                 return false;
diff --git a/framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java b/framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java
index 7d1b7b7..5c304a3 100644
--- a/framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java
+++ b/framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java
@@ -70,7 +70,7 @@ import com.cloud.utils.db.SearchCriteria.SelectType;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.net.Ip;
 import com.cloud.utils.net.NetUtils;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 import net.sf.cglib.proxy.Callback;
 import net.sf.cglib.proxy.CallbackFilter;
@@ -1998,7 +1998,7 @@ public abstract class GenericDaoBase<T, ID extends Serializable> extends Compone
 
     public Integer getDistinctCountIncludingRemoved(SearchCriteria<T> sc, String[] distinctColumns) {
         String clause = sc != null ? sc.getWhereClause() : null;
-        if (Strings.isNullOrEmpty(clause)) {
+        if (StringUtils.isEmpty(clause)) {
             clause = null;
         }
 
diff --git a/framework/quota/src/main/java/org/apache/cloudstack/quota/dao/QuotaEmailTemplatesDaoImpl.java b/framework/quota/src/main/java/org/apache/cloudstack/quota/dao/QuotaEmailTemplatesDaoImpl.java
index cb5044c..e774a52 100644
--- a/framework/quota/src/main/java/org/apache/cloudstack/quota/dao/QuotaEmailTemplatesDaoImpl.java
+++ b/framework/quota/src/main/java/org/apache/cloudstack/quota/dao/QuotaEmailTemplatesDaoImpl.java
@@ -29,7 +29,7 @@ import com.cloud.utils.db.Transaction;
 import com.cloud.utils.db.TransactionCallback;
 import com.cloud.utils.db.TransactionLegacy;
 import com.cloud.utils.db.TransactionStatus;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 @Component
 public class QuotaEmailTemplatesDaoImpl extends GenericDaoBase<QuotaEmailTemplatesVO, Long> implements QuotaEmailTemplatesDao {
@@ -51,7 +51,7 @@ public class QuotaEmailTemplatesDaoImpl extends GenericDaoBase<QuotaEmailTemplat
             @Override
             public List<QuotaEmailTemplatesVO> doInTransaction(final TransactionStatus status) {
                 SearchCriteria<QuotaEmailTemplatesVO> sc = QuotaEmailTemplateSearch.create();
-                if (!Strings.isNullOrEmpty(templateName)) {
+                if (StringUtils.isNotEmpty(templateName)) {
                     sc.setParameters("template_name", templateName);
                 }
                 return listBy(sc);
diff --git a/framework/security/src/main/java/org/apache/cloudstack/framework/security/keystore/KeystoreManagerImpl.java b/framework/security/src/main/java/org/apache/cloudstack/framework/security/keystore/KeystoreManagerImpl.java
index bed74bf..2e0d9e3 100644
--- a/framework/security/src/main/java/org/apache/cloudstack/framework/security/keystore/KeystoreManagerImpl.java
+++ b/framework/security/src/main/java/org/apache/cloudstack/framework/security/keystore/KeystoreManagerImpl.java
@@ -30,8 +30,7 @@ import java.util.regex.Pattern;
 
 import javax.inject.Inject;
 
-import com.google.common.base.Strings;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
@@ -49,7 +48,7 @@ public class KeystoreManagerImpl extends ManagerBase implements KeystoreManager
 
     @Override
     public boolean validateCertificate(String certificate, String key, String domainSuffix) {
-        if (Strings.isNullOrEmpty(certificate) || Strings.isNullOrEmpty(key) || Strings.isNullOrEmpty(domainSuffix)) {
+        if (StringUtils.isAnyEmpty(certificate, key, domainSuffix)) {
             s_logger.error("Invalid parameter found in (certificate, key, domainSuffix) tuple for domain: " + domainSuffix);
             return false;
         }
diff --git a/framework/spring/lifecycle/src/main/java/org/apache/cloudstack/spring/lifecycle/registry/ExtensionRegistry.java b/framework/spring/lifecycle/src/main/java/org/apache/cloudstack/spring/lifecycle/registry/ExtensionRegistry.java
index ebb5b5f..eda9a23 100644
--- a/framework/spring/lifecycle/src/main/java/org/apache/cloudstack/spring/lifecycle/registry/ExtensionRegistry.java
+++ b/framework/spring/lifecycle/src/main/java/org/apache/cloudstack/spring/lifecycle/registry/ExtensionRegistry.java
@@ -27,7 +27,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
 
 import javax.annotation.PostConstruct;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.BeanNameAware;
 
diff --git a/plugins/acl/dynamic-role-based/src/main/java/org/apache/cloudstack/acl/DynamicRoleBasedAPIAccessChecker.java b/plugins/acl/dynamic-role-based/src/main/java/org/apache/cloudstack/acl/DynamicRoleBasedAPIAccessChecker.java
index f693bae..4664811 100644
--- a/plugins/acl/dynamic-role-based/src/main/java/org/apache/cloudstack/acl/DynamicRoleBasedAPIAccessChecker.java
+++ b/plugins/acl/dynamic-role-based/src/main/java/org/apache/cloudstack/acl/DynamicRoleBasedAPIAccessChecker.java
@@ -36,7 +36,7 @@ import com.cloud.user.AccountService;
 import com.cloud.user.User;
 import com.cloud.utils.component.AdapterBase;
 import com.cloud.utils.component.PluggableService;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public class DynamicRoleBasedAPIAccessChecker extends AdapterBase implements APIAclChecker {
 
@@ -107,7 +107,7 @@ public class DynamicRoleBasedAPIAccessChecker extends AdapterBase implements API
     }
 
     public void addApiToRoleBasedAnnotationsMap(final RoleType roleType, final String commandName) {
-        if (roleType == null || Strings.isNullOrEmpty(commandName)) {
+        if (roleType == null || StringUtils.isEmpty(commandName)) {
             return;
         }
         final Set<String> commands = annotationRoleBasedApisMap.get(roleType);
diff --git a/plugins/api/discovery/src/main/java/org/apache/cloudstack/discovery/ApiDiscoveryServiceImpl.java b/plugins/api/discovery/src/main/java/org/apache/cloudstack/discovery/ApiDiscoveryServiceImpl.java
index 5d22856..1244cfb 100644
--- a/plugins/api/discovery/src/main/java/org/apache/cloudstack/discovery/ApiDiscoveryServiceImpl.java
+++ b/plugins/api/discovery/src/main/java/org/apache/cloudstack/discovery/ApiDiscoveryServiceImpl.java
@@ -39,6 +39,7 @@ import org.apache.cloudstack.api.response.ApiDiscoveryResponse;
 import org.apache.cloudstack.api.response.ApiParameterResponse;
 import org.apache.cloudstack.api.response.ApiResponseResponse;
 import org.apache.cloudstack.api.response.ListResponse;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.reflections.ReflectionUtils;
 import org.springframework.stereotype.Component;
@@ -46,7 +47,6 @@ import org.springframework.stereotype.Component;
 import com.cloud.serializer.Param;
 import com.cloud.user.User;
 import com.cloud.utils.ReflectUtil;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.component.ComponentLifecycleBase;
 import com.cloud.utils.component.PluggableService;
 import com.google.gson.annotations.SerializedName;
@@ -126,7 +126,7 @@ public class ApiDiscoveryServiceImpl extends ComponentLifecycleBase implements A
             for (ApiParameterResponse param : response.getParams()) {
                 if (responseApiNameListMap.containsKey(param.getRelated())) {
                     List<String> relatedApis = responseApiNameListMap.get(param.getRelated());
-                    param.setRelated(StringUtils.join(relatedApis, ","));
+                    param.setRelated(StringUtils.defaultString(StringUtils.join(relatedApis, ",")));
                 } else {
                     param.setRelated(null);
                 }
diff --git a/plugins/api/discovery/src/test/java/org/apache/cloudstack/discovery/ApiDiscoveryTest.java b/plugins/api/discovery/src/test/java/org/apache/cloudstack/discovery/ApiDiscoveryTest.java
index c261fb2..b0ca232 100644
--- a/plugins/api/discovery/src/test/java/org/apache/cloudstack/discovery/ApiDiscoveryTest.java
+++ b/plugins/api/discovery/src/test/java/org/apache/cloudstack/discovery/ApiDiscoveryTest.java
@@ -26,7 +26,7 @@ import org.apache.cloudstack.api.command.user.vm.ListVMsCmd;
 import org.apache.cloudstack.api.response.ApiDiscoveryResponse;
 import org.apache.cloudstack.api.response.ApiResponseResponse;
 import org.apache.cloudstack.api.response.ListResponse;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
diff --git a/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/veeam/VeeamClient.java b/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/veeam/VeeamClient.java
index 9facba5..1012d5e 100644
--- a/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/veeam/VeeamClient.java
+++ b/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/veeam/VeeamClient.java
@@ -56,7 +56,6 @@ import org.apache.cloudstack.backup.veeam.api.Ref;
 import org.apache.cloudstack.backup.veeam.api.RestoreSession;
 import org.apache.cloudstack.backup.veeam.api.Task;
 import org.apache.cloudstack.utils.security.SSLUtils;
-import org.apache.commons.lang.StringUtils;
 import org.apache.http.HttpHeaders;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
@@ -80,7 +79,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.dataformat.xml.XmlMapper;
 import com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public class VeeamClient {
     private static final Logger LOG = Logger.getLogger(VeeamClient.class);
@@ -138,7 +137,7 @@ public class VeeamClient {
             final HttpResponse response = httpClient.execute(request);
             checkAuthFailure(response);
             veeamSessionId = response.getFirstHeader(SESSION_HEADER).getValue();
-            if (Strings.isNullOrEmpty(veeamSessionId)) {
+            if (StringUtils.isEmpty(veeamSessionId)) {
                 throw new CloudRuntimeException("Veeam Session ID is not available to perform API requests");
             }
             if (response.getStatusLine().getStatusCode() != HttpStatus.SC_CREATED) {
diff --git a/plugins/ca/root-ca/src/main/java/org/apache/cloudstack/ca/provider/RootCACustomTrustManager.java b/plugins/ca/root-ca/src/main/java/org/apache/cloudstack/ca/provider/RootCACustomTrustManager.java
index 0a4df0a..fb5da50 100644
--- a/plugins/ca/root-ca/src/main/java/org/apache/cloudstack/ca/provider/RootCACustomTrustManager.java
+++ b/plugins/ca/root-ca/src/main/java/org/apache/cloudstack/ca/provider/RootCACustomTrustManager.java
@@ -30,7 +30,7 @@ import javax.net.ssl.X509TrustManager;
 import org.apache.log4j.Logger;
 
 import com.cloud.certificate.dao.CrlDao;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public final class RootCACustomTrustManager implements X509TrustManager {
     private static final Logger LOG = Logger.getLogger(RootCACustomTrustManager.class);
@@ -43,7 +43,7 @@ public final class RootCACustomTrustManager implements X509TrustManager {
     private Map<String, X509Certificate> activeCertMap;
 
     public RootCACustomTrustManager(final String clientAddress, final boolean authStrictness, final boolean allowExpiredCertificate, final Map<String, X509Certificate> activeCertMap, final X509Certificate caCertificate, final CrlDao crlDao) {
-        if (!Strings.isNullOrEmpty(clientAddress)) {
+        if (StringUtils.isNotEmpty(clientAddress)) {
             this.clientAddress = clientAddress.replace("/", "").split(":")[0];
         }
         this.authStrictness = authStrictness;
@@ -96,7 +96,7 @@ public final class RootCACustomTrustManager implements X509TrustManager {
             final String errorMsg = String.format("Client is using revoked certificate of serial=%x, subject=%s from address=%s",
                     primaryClientCertificate.getSerialNumber(), primaryClientCertificate.getSubjectDN(), clientAddress);
             LOG.error(errorMsg);
-            exceptionMsg = (Strings.isNullOrEmpty(exceptionMsg)) ? errorMsg : (exceptionMsg + ". " + errorMsg);
+            exceptionMsg = (StringUtils.isEmpty(exceptionMsg)) ? errorMsg : (exceptionMsg + ". " + errorMsg);
         }
 
         // Validity check
@@ -126,9 +126,9 @@ public final class RootCACustomTrustManager implements X509TrustManager {
         if (!certMatchesOwnership) {
             final String errorMsg = "Certificate ownership verification failed for client: " + clientAddress;
             LOG.error(errorMsg);
-            exceptionMsg = (Strings.isNullOrEmpty(exceptionMsg)) ? errorMsg : (exceptionMsg + ". " + errorMsg);
+            exceptionMsg = (StringUtils.isEmpty(exceptionMsg)) ? errorMsg : (exceptionMsg + ". " + errorMsg);
         }
-        if (authStrictness && !Strings.isNullOrEmpty(exceptionMsg)) {
+        if (authStrictness && StringUtils.isNotEmpty(exceptionMsg)) {
             throw new CertificateException(exceptionMsg);
         }
         if (LOG.isDebugEnabled()) {
@@ -139,7 +139,7 @@ public final class RootCACustomTrustManager implements X509TrustManager {
             }
         }
 
-        if (primaryClientCertificate != null && activeCertMap != null && !Strings.isNullOrEmpty(clientAddress)) {
+        if (primaryClientCertificate != null && activeCertMap != null && StringUtils.isNotEmpty(clientAddress)) {
             activeCertMap.put(clientAddress, primaryClientCertificate);
         }
     }
diff --git a/plugins/ca/root-ca/src/main/java/org/apache/cloudstack/ca/provider/RootCAProvider.java b/plugins/ca/root-ca/src/main/java/org/apache/cloudstack/ca/provider/RootCAProvider.java
index b0eebd4..f71274b 100644
--- a/plugins/ca/root-ca/src/main/java/org/apache/cloudstack/ca/provider/RootCAProvider.java
+++ b/plugins/ca/root-ca/src/main/java/org/apache/cloudstack/ca/provider/RootCAProvider.java
@@ -75,7 +75,7 @@ import com.cloud.utils.component.AdapterBase;
 import com.cloud.utils.db.GlobalLock;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.net.NetUtils;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public final class RootCAProvider extends AdapterBase implements CAProvider, Configurable {
     private static final Logger LOG = Logger.getLogger(RootCAProvider.class);
@@ -133,7 +133,7 @@ public final class RootCAProvider extends AdapterBase implements CAProvider, Con
     ///////////////////////////////////////////////////////////
 
     private Certificate generateCertificate(final List<String> domainNames, final List<String> ipAddresses, final int validityDays) throws NoSuchAlgorithmException, InvalidKeyException, NoSuchProviderException, CertificateException, SignatureException, IOException, OperatorCreationException {
-        if (domainNames == null || domainNames.size() < 1 || Strings.isNullOrEmpty(domainNames.get(0))) {
+        if (domainNames == null || domainNames.size() < 1 || StringUtils.isEmpty(domainNames.get(0))) {
             throw new CloudRuntimeException("No domain name is specified, cannot generate certificate");
         }
         final String subject = "CN=" + domainNames.get(0);
@@ -335,7 +335,7 @@ public final class RootCAProvider extends AdapterBase implements CAProvider, Con
     }
 
     private boolean loadRootCAKeyPair() {
-        if (Strings.isNullOrEmpty(rootCAPublicKey.value()) || Strings.isNullOrEmpty(rootCAPrivateKey.value())) {
+        if (StringUtils.isAnyEmpty(rootCAPublicKey.value(), rootCAPrivateKey.value())) {
             return false;
         }
         try {
@@ -348,7 +348,7 @@ public final class RootCAProvider extends AdapterBase implements CAProvider, Con
     }
 
     private boolean loadRootCACertificate() {
-        if (Strings.isNullOrEmpty(rootCACertificate.value())) {
+        if (StringUtils.isEmpty(rootCACertificate.value())) {
             return false;
         }
         try {
diff --git a/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BaremetalKickStartPxeResource.java b/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BaremetalKickStartPxeResource.java
index 260f4f1..dbee3c4 100644
--- a/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BaremetalKickStartPxeResource.java
+++ b/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BaremetalKickStartPxeResource.java
@@ -24,7 +24,7 @@ import java.util.Map;
 
 import javax.naming.ConfigurationException;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.trilead.ssh2.SCPClient;
diff --git a/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BaremetalPingPxeResource.java b/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BaremetalPingPxeResource.java
index 80827a2..71e7ae7 100644
--- a/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BaremetalPingPxeResource.java
+++ b/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BaremetalPingPxeResource.java
@@ -28,6 +28,7 @@ import java.util.Map;
 
 import javax.naming.ConfigurationException;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.trilead.ssh2.SCPClient;
@@ -233,7 +234,7 @@ public class BaremetalPingPxeResource extends BaremetalPxeResourceBase {
                 sb.append(contents);
                 sb.append(";");
             }
-            String arg = org.apache.commons.lang.StringUtils.stripEnd(sb.toString(), ";");
+            String arg = StringUtils.stripEnd(sb.toString(), ";");
 
             sshConnection.connect(null, 60000, 60000);
             if (!sshConnection.authenticateWithPassword(_username, _password)) {
diff --git a/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/Force10BaremetalSwitchBackend.java b/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/Force10BaremetalSwitchBackend.java
index c34a6cd..30197bf 100644
--- a/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/Force10BaremetalSwitchBackend.java
+++ b/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/Force10BaremetalSwitchBackend.java
@@ -26,7 +26,7 @@ import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.xmlobject.XmlObject;
 import com.cloud.utils.xmlobject.XmlObjectParser;
 import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
diff --git a/plugins/hypervisors/hyperv/src/main/java/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java b/plugins/hypervisors/hyperv/src/main/java/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java
index 038661b..14d3c09 100644
--- a/plugins/hypervisors/hyperv/src/main/java/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java
+++ b/plugins/hypervisors/hyperv/src/main/java/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java
@@ -2085,7 +2085,7 @@ public class HypervDirectConnectResource extends ServerResourceBase implements S
 
         final String controlIp = getRouterSshControlIp(cmd);
         final String config = cmd.getConfiguration();
-        if (org.apache.commons.lang.StringUtils.isBlank(config)) {
+        if (org.apache.commons.lang3.StringUtils.isBlank(config)) {
             s_logger.error("SetMonitorServiceCommand should have config for this case");
             return new Answer(cmd, false, "SetMonitorServiceCommand failed due to missing config");
         }
@@ -2401,7 +2401,7 @@ public class HypervDirectConnectResource extends ServerResourceBase implements S
                 }
                 final List<String> stringList = new ArrayList<String>();
                 Collections.addAll(stringList, temp);
-                cleanLogString = StringUtils.join(stringList, ",");
+                cleanLogString = org.apache.commons.lang3.StringUtils.join(stringList, ",");
             }
         }
         return cleanLogString;
diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/dpdk/DpdkDriverImpl.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/dpdk/DpdkDriverImpl.java
index b5886a1..022eafa 100644
--- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/dpdk/DpdkDriverImpl.java
+++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/dpdk/DpdkDriverImpl.java
@@ -20,7 +20,7 @@ package com.cloud.hypervisor.kvm.dpdk;
 
 import com.cloud.utils.component.AdapterBase;
 import com.cloud.utils.script.Script;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import java.util.Map;
diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java
index 741aa72..18ff8d4 100644
--- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java
+++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java
@@ -28,10 +28,9 @@ import java.util.regex.Pattern;
 
 import javax.naming.ConfigurationException;
 
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.net.NetUtils;
 import com.cloud.utils.script.OutputInterpreter;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.libvirt.LibvirtException;
 
@@ -402,7 +401,7 @@ public class BridgeVifDriver extends VifDriverBase {
                     continue;
                 }
                 final String device = tokens[2];
-                if (!Strings.isNullOrEmpty(device) && !device.equalsIgnoreCase(linkLocalBr)) {
+                if (StringUtils.isNotEmpty(device) && !device.equalsIgnoreCase(linkLocalBr)) {
                     Script.runSimpleBashScript("ip route del " + _controlCidr + " dev " + tokens[2]);
                 } else {
                     foundLinkLocalBr = true;
diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/IvsVifDriver.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/IvsVifDriver.java
index fd22c5e..4c165f7 100644
--- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/IvsVifDriver.java
+++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/IvsVifDriver.java
@@ -26,7 +26,7 @@ import java.util.regex.Pattern;
 
 import javax.naming.ConfigurationException;
 
-import com.cloud.utils.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.libvirt.LibvirtException;
 
diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
index 46763a1..0640d6e 100644
--- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
+++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
@@ -174,7 +174,6 @@ import com.cloud.utils.ExecutionResult;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
 import com.cloud.utils.PropertiesUtil;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.Ternary;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.net.NetUtils;
@@ -185,7 +184,7 @@ import com.cloud.utils.ssh.SshHelper;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachine.PowerState;
 import com.cloud.vm.VmDetailConstants;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.cloudstack.utils.bytescale.ByteScaleUtils;
 import org.libvirt.VcpuInfo;
 
@@ -813,12 +812,12 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
         }
 
         directDownloadTemporaryDownloadPath = (String) params.get("direct.download.temporary.download.location");
-        if (org.apache.commons.lang.StringUtils.isBlank(directDownloadTemporaryDownloadPath)) {
+        if (StringUtils.isBlank(directDownloadTemporaryDownloadPath)) {
             directDownloadTemporaryDownloadPath = getDefaultDirectDownloadTemporaryPath();
         }
 
         cachePath = (String) params.get(HOST_CACHE_PATH_PARAMETER);
-        if (org.apache.commons.lang.StringUtils.isBlank(cachePath)) {
+        if (StringUtils.isBlank(cachePath)) {
             cachePath = getDefaultCachePath();
         }
 
@@ -1060,12 +1059,12 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
             _rngEnable = true;
 
             value = (String) params.get("vm.rng.model");
-            if (!Strings.isNullOrEmpty(value)) {
+            if (StringUtils.isNotEmpty(value)) {
                 _rngBackendModel = RngBackendModel.valueOf(value.toUpperCase());
             }
 
             value = (String) params.get("vm.rng.path");
-            if (!Strings.isNullOrEmpty(value)) {
+            if (StringUtils.isNotEmpty(value)) {
                 _rngPath = value;
             }
 
@@ -1077,12 +1076,12 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
         }
 
         value = (String) params.get("vm.watchdog.model");
-        if (!Strings.isNullOrEmpty(value)) {
+        if (StringUtils.isNotEmpty(value)) {
             _watchDogModel = WatchDogModel.valueOf(value.toUpperCase());
         }
 
         value = (String) params.get("vm.watchdog.action");
-        if (!Strings.isNullOrEmpty(value)) {
+        if (StringUtils.isNotEmpty(value)) {
             _watchDogAction = WatchDogAction.valueOf(value.toUpperCase());
         }
 
@@ -1133,7 +1132,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
         }
 
         final String cpuArchOverride = (String)params.get("guest.cpu.arch");
-        if (!Strings.isNullOrEmpty(cpuArchOverride)) {
+        if (StringUtils.isNotEmpty(cpuArchOverride)) {
             _guestCpuArch = cpuArchOverride;
             s_logger.info("Using guest CPU architecture: " + _guestCpuArch);
         }
@@ -2127,7 +2126,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
                 }
                 nicNum = macAddressToNicNum.get(ip.getVifMacAddress());
 
-                if (org.apache.commons.lang.StringUtils.equalsIgnoreCase(lastIp, "true") && !ip.isAdd()) {
+                if (StringUtils.equalsIgnoreCase(lastIp, "true") && !ip.isAdd()) {
                     // in isolated network eth2 is the default public interface. We don't want to delete it.
                     if (nicNum != 2) {
                         vifHotUnPlug(conn, routerName, ip.getVifMacAddress());
@@ -2514,7 +2513,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
 
     protected ClockDef createClockDef(final VirtualMachineTO vmTO) {
         ClockDef clock = new ClockDef();
-        if (org.apache.commons.lang.StringUtils.startsWith(vmTO.getOs(), WINDOWS)) {
+        if (StringUtils.startsWith(vmTO.getOs(), WINDOWS)) {
             clock.setClockOffset(ClockDef.ClockOffset.LOCALTIME);
             clock.setTimer(HYPERVCLOCK, null, null);
         } else if ((vmTO.getType() != VirtualMachine.Type.User || isGuestPVEnabled(vmTO.getOs())) && _hypervisorLibvirtVersion >= MIN_LIBVIRT_VERSION_FOR_GUEST_CPU_MODE) {
@@ -2690,7 +2689,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
                 }
             }
             String comp = extraConfigBuilder.toString();
-            if (org.apache.commons.lang.StringUtils.isNotBlank(comp)) {
+            if (StringUtils.isNotBlank(comp)) {
                 vm.addComp(comp);
             }
         }
@@ -3759,10 +3758,10 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
         } else if (platformEmulator.startsWith("Other PV Virtio-SCSI")) {
             return DiskDef.DiskBus.SCSI;
         } else if (platformEmulator.contains("Ubuntu") ||
-                org.apache.commons.lang3.StringUtils.startsWithAny(platformEmulator,
+                StringUtils.startsWithAny(platformEmulator,
                         "Fedora", "CentOS", "Red Hat Enterprise Linux", "Debian GNU/Linux", "FreeBSD", "Oracle", "Other PV")) {
             return DiskDef.DiskBus.VIRTIO;
-        } else if (isUefiEnabled && org.apache.commons.lang3.StringUtils.startsWithAny(platformEmulator, "Windows", "Other")) {
+        } else if (isUefiEnabled && StringUtils.startsWithAny(platformEmulator, "Windows", "Other")) {
             return DiskDef.DiskBus.SATA;
         } else {
             return DiskDef.DiskBus.IDE;
@@ -4483,7 +4482,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
     }
 
     public String getVlanIdFromBridgeName(String brName) {
-        if (org.apache.commons.lang.StringUtils.isNotBlank(brName)) {
+        if (StringUtils.isNotBlank(brName)) {
             String[] s = brName.split("-");
             if (s.length > 1) {
                 return s[1];
@@ -4590,8 +4589,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
             Map<String, String> info = qemu.info(file);
             String backingFilePath = info.get(QemuImg.BACKING_FILE);
             String backingFileFormat = info.get(QemuImg.BACKING_FILE_FORMAT);
-            if (org.apache.commons.lang.StringUtils.isNotBlank(backingFilePath)
-                    && org.apache.commons.lang.StringUtils.isBlank(backingFileFormat)) {
+            if (StringUtils.isNotBlank(backingFilePath) && StringUtils.isBlank(backingFileFormat)) {
                 // VMs which are created in CloudStack 4.14 and before cannot be started or migrated
                 // in latest Linux distributions due to missing backing file format
                 // Please refer to https://libvirt.org/kbase/backing_chains.html#vm-refuses-to-start-due-to-misconfigured-backing-store-format
diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java
index bb3f713..15ed16e 100644
--- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java
+++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java
@@ -26,7 +26,7 @@ import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -35,8 +35,6 @@ import org.w3c.dom.NodeList;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 
-import com.google.common.base.Strings;
-
 import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.ChannelDef;
 import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.DiskDef;
 import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef;
@@ -254,7 +252,7 @@ public class LibvirtDomainXMLParser {
                 String state = getAttrValue("target", "state", channel);
 
                 ChannelDef def = null;
-                if (!StringUtils.isNotBlank(state)) {
+                if (StringUtils.isBlank(state)) {
                     def = new ChannelDef(name, ChannelDef.ChannelType.valueOf(type.toUpperCase()), new File(path));
                 } else {
                     def = new ChannelDef(name, ChannelDef.ChannelType.valueOf(type.toUpperCase()),
@@ -291,7 +289,7 @@ public class LibvirtDomainXMLParser {
                 String bytes = getAttrValue("rate", "bytes", rng);
                 String period = getAttrValue("rate", "period", rng);
 
-                if (Strings.isNullOrEmpty(backendModel)) {
+                if (StringUtils.isEmpty(backendModel)) {
                     def = new RngDef(path, Integer.parseInt(bytes), Integer.parseInt(period));
                 } else {
                     def = new RngDef(path, RngBackendModel.valueOf(backendModel.toUpperCase()),
@@ -308,11 +306,11 @@ public class LibvirtDomainXMLParser {
                 String action = watchDog.getAttribute("action");
                 String model = watchDog.getAttribute("model");
 
-                if (Strings.isNullOrEmpty(model)) {
+                if (StringUtils.isEmpty(model)) {
                    continue;
                 }
 
-                if (Strings.isNullOrEmpty(action)) {
+                if (StringUtils.isEmpty(action)) {
                     def = new WatchDogDef(WatchDogModel.valueOf(model.toUpperCase()));
                 } else {
                     def = new WatchDogDef(WatchDogAction.valueOf(action.toUpperCase()),
diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtStoragePoolXMLParser.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtStoragePoolXMLParser.java
index bd7deaa..d88d68d 100644
--- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtStoragePoolXMLParser.java
+++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtStoragePoolXMLParser.java
@@ -23,7 +23,7 @@ import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
index d8b1d4e..3da0687 100644
--- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
+++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
@@ -23,7 +23,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.commons.lang.StringEscapeUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 public class LibvirtVMDef {
diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/OvsVifDriver.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/OvsVifDriver.java
index 185ef89..05d33bc 100644
--- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/OvsVifDriver.java
+++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/OvsVifDriver.java
@@ -28,7 +28,7 @@ import com.cloud.hypervisor.kvm.dpdk.DpdkDriver;
 import com.cloud.hypervisor.kvm.dpdk.DpdkDriverImpl;
 import com.cloud.hypervisor.kvm.dpdk.DpdkHelper;
 import com.cloud.utils.exception.CloudRuntimeException;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.libvirt.LibvirtException;
 
@@ -64,7 +64,7 @@ public class OvsVifDriver extends VifDriverBase {
         }
 
         String controlCidr = (String)params.get("control.cidr");
-        if (com.cloud.utils.StringUtils.isNotBlank(controlCidr)) {
+        if (StringUtils.isNotBlank(controlCidr)) {
             _controlCidr = controlCidr;
         }
 
diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/rolling/maintenance/RollingMaintenanceAgentExecutor.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/rolling/maintenance/RollingMaintenanceAgentExecutor.java
index 110c4a8..7635b81 100644
--- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/rolling/maintenance/RollingMaintenanceAgentExecutor.java
+++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/rolling/maintenance/RollingMaintenanceAgentExecutor.java
@@ -20,7 +20,7 @@ import com.cloud.utils.Pair;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.script.OutputInterpreter;
 import com.cloud.utils.script.Script;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.joda.time.Duration;
 
@@ -43,7 +43,7 @@ public class RollingMaintenanceAgentExecutor extends RollingMaintenanceExecutorB
         Duration duration = Duration.standardSeconds(timeout);
         final Script script = new Script(scriptFile.getAbsolutePath(), duration, s_logger);
         final OutputInterpreter.AllLinesParser parser = new OutputInterpreter.AllLinesParser();
-        if (!Strings.isNullOrEmpty(payload)) {
+        if (StringUtils.isNotEmpty(payload)) {
             script.add(payload);
         }
         s_logger.info("Executing stage: " + stage + " script: " + script);
diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/rolling/maintenance/RollingMaintenanceExecutorBase.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/rolling/maintenance/RollingMaintenanceExecutorBase.java
index 140b588..70c8e19 100644
--- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/rolling/maintenance/RollingMaintenanceExecutorBase.java
+++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/rolling/maintenance/RollingMaintenanceExecutorBase.java
@@ -17,7 +17,7 @@
 package com.cloud.hypervisor.kvm.resource.rolling.maintenance;
 
 import com.cloud.utils.exception.CloudRuntimeException;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import java.io.File;
diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/rolling/maintenance/RollingMaintenanceServiceExecutor.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/rolling/maintenance/RollingMaintenanceServiceExecutor.java
index 6659bf4..bf8147a 100644
--- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/rolling/maintenance/RollingMaintenanceServiceExecutor.java
+++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/rolling/maintenance/RollingMaintenanceServiceExecutor.java
@@ -20,7 +20,7 @@ import com.cloud.utils.Pair;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.script.OutputInterpreter;
 import com.cloud.utils.script.Script;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import java.io.File;
diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtMigrateCommandWrapper.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtMigrateCommandWrapper.java
index 1ad1802..21552bd 100644
--- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtMigrateCommandWrapper.java
+++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtMigrateCommandWrapper.java
@@ -47,7 +47,7 @@ import com.cloud.agent.api.to.DiskTO;
 import com.cloud.agent.api.to.DpdkTO;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.libvirt.Connect;
 import org.libvirt.Domain;
@@ -80,7 +80,6 @@ import com.cloud.resource.ResourceWrapper;
 import com.cloud.utils.Ternary;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.vm.VirtualMachine;
-import com.google.common.base.Strings;
 
 @ResourceWrapper(handles =  MigrateCommand.class)
 public final class LibvirtMigrateCommandWrapper extends CommandWrapper<MigrateCommand, Answer, LibvirtComputingResource> {
@@ -91,7 +90,7 @@ public final class LibvirtMigrateCommandWrapper extends CommandWrapper<MigrateCo
     private static final Logger s_logger = Logger.getLogger(LibvirtMigrateCommandWrapper.class);
 
     protected String createMigrationURI(final String destinationIp, final LibvirtComputingResource libvirtComputingResource) {
-        if (Strings.isNullOrEmpty(destinationIp)) {
+        if (StringUtils.isEmpty(destinationIp)) {
             throw new CloudRuntimeException("Provided libvirt destination ip is invalid");
         }
         return String.format("%s://%s/system", libvirtComputingResource.isHostSecured() ? "qemu+tls" : "qemu+tcp", destinationIp);
@@ -575,7 +574,7 @@ public final class LibvirtMigrateCommandWrapper extends CommandWrapper<MigrateCo
     }
 
     private String getPathFromSourceText(Set<String> paths, String sourceText) {
-        if (paths != null && !StringUtils.isBlank(sourceText)) {
+        if (paths != null && StringUtils.isNotBlank(sourceText)) {
             for (String path : paths) {
                 if (sourceText.contains(path)) {
                     return path;
diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtRevokeDirectDownloadCertificateWrapper.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtRevokeDirectDownloadCertificateWrapper.java
index e942dcb..6c83c4d 100644
--- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtRevokeDirectDownloadCertificateWrapper.java
+++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtRevokeDirectDownloadCertificateWrapper.java
@@ -28,14 +28,13 @@ import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.script.Script;
 import org.apache.cloudstack.agent.directdownload.RevokeDirectDownloadCertificateCommand;
 import org.apache.cloudstack.utils.security.KeyStoreUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 
-import static org.apache.commons.lang.StringUtils.isBlank;
-
 @ResourceWrapper(handles =  RevokeDirectDownloadCertificateCommand.class)
 public class LibvirtRevokeDirectDownloadCertificateWrapper extends CommandWrapper<RevokeDirectDownloadCertificateCommand, Answer, LibvirtComputingResource> {
 
@@ -80,7 +79,7 @@ public class LibvirtRevokeDirectDownloadCertificateWrapper extends CommandWrappe
         try {
             File agentFile = getAgentPropertiesFile();
             String privatePassword = getKeystorePassword(agentFile);
-            if (isBlank(privatePassword)) {
+            if (StringUtils.isBlank(privatePassword)) {
                 return new Answer(command, false, "No password found for keystore: " + KeyStoreUtils.KS_FILENAME);
             }
 
diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtSetupDirectDownloadCertificateCommandWrapper.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtSetupDirectDownloadCertificateCommandWrapper.java
index 97035ee..fff8da7 100644
--- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtSetupDirectDownloadCertificateCommandWrapper.java
+++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtSetupDirectDownloadCertificateCommandWrapper.java
@@ -27,14 +27,13 @@ import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.script.Script;
 import org.apache.cloudstack.agent.directdownload.SetupDirectDownloadCertificateCommand;
 import org.apache.cloudstack.utils.security.KeyStoreUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 
-import static org.apache.commons.lang.StringUtils.isBlank;
-
 @ResourceWrapper(handles =  SetupDirectDownloadCertificateCommand.class)
 public class LibvirtSetupDirectDownloadCertificateCommandWrapper extends CommandWrapper<SetupDirectDownloadCertificateCommand, Answer, LibvirtComputingResource> {
 
@@ -118,7 +117,7 @@ public class LibvirtSetupDirectDownloadCertificateCommandWrapper extends Command
         try {
             File agentFile = getAgentPropertiesFile();
             String privatePassword = getKeystorePassword(agentFile);
-            if (isBlank(privatePassword)) {
+            if (StringUtils.isBlank(privatePassword)) {
                 return new Answer(cmd, false, "No password found for keystore: " + KeyStoreUtils.KS_FILENAME);
             }
 
diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiAdmStorageAdaptor.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiAdmStorageAdaptor.java
index fb89683..e050e30 100644
--- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiAdmStorageAdaptor.java
+++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/IscsiAdmStorageAdaptor.java
@@ -23,6 +23,7 @@ import java.util.Map;
 import org.apache.cloudstack.utils.qemu.QemuImg;
 import org.apache.cloudstack.utils.qemu.QemuImgException;
 import org.apache.cloudstack.utils.qemu.QemuImgFile;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import org.apache.cloudstack.utils.qemu.QemuImg.PhysicalDiskFormat;
@@ -31,7 +32,6 @@ import com.cloud.agent.api.to.DiskTO;
 import com.cloud.storage.Storage;
 import com.cloud.storage.Storage.ProvisioningType;
 import com.cloud.storage.Storage.StoragePoolType;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.script.OutputInterpreter;
 import com.cloud.utils.script.Script;
@@ -104,7 +104,7 @@ public class IscsiAdmStorageAdaptor implements StorageAdaptor {
         String chapInitiatorUsername = details.get(DiskTO.CHAP_INITIATOR_USERNAME);
         String chapInitiatorSecret = details.get(DiskTO.CHAP_INITIATOR_SECRET);
 
-        if (StringUtils.isNotBlank(chapInitiatorUsername) && StringUtils.isNotBlank(chapInitiatorSecret)) {
+        if (StringUtils.isNoneBlank(chapInitiatorUsername, chapInitiatorSecret)) {
             try {
                 // ex. sudo iscsiadm -m node -T iqn.2012-03.com.test:volume1 -p 192.168.233.10:3260 --op update -n node.session.auth.authmethod -v CHAP
                 executeChapCommand(volumeUuid, pool, "node.session.auth.authmethod", "CHAP", null);
diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
index 1b11b41..fc0366f 100644
--- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
+++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
@@ -70,7 +70,7 @@ import org.apache.cloudstack.utils.qemu.QemuImgException;
 import org.apache.cloudstack.utils.qemu.QemuImgFile;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.libvirt.Connect;
 import org.libvirt.Domain;
@@ -1893,7 +1893,7 @@ public class KVMStorageProcessor implements StorageProcessor {
             }
 
             Long templateSize = null;
-            if (!org.apache.commons.lang.StringUtils.isBlank(cmd.getUrl())) {
+            if (StringUtils.isNotBlank(cmd.getUrl())) {
                 String url = cmd.getUrl();
                 templateSize = UriUtils.getRemoteSize(url);
             }
diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/ScaleIOStorageAdaptor.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/ScaleIOStorageAdaptor.java
index 4103d76..30559fa 100644
--- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/ScaleIOStorageAdaptor.java
+++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/ScaleIOStorageAdaptor.java
@@ -38,7 +38,7 @@ import com.cloud.storage.StorageManager;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.script.OutputInterpreter;
 import com.cloud.utils.script.Script;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import org.libvirt.LibvirtException;
 
 @StorageAdaptorInfo(storagePoolType= Storage.StoragePoolType.PowerFlex)
@@ -70,7 +70,7 @@ public class ScaleIOStorageAdaptor implements StorageAdaptor {
 
     @Override
     public KVMPhysicalDisk getPhysicalDisk(String volumePath, KVMStoragePool pool) {
-        if (Strings.isNullOrEmpty(volumePath) || pool == null) {
+        if (StringUtils.isEmpty(volumePath) || pool == null) {
             LOGGER.error("Unable to get physical disk, volume path or pool not specified");
             return null;
         }
@@ -80,7 +80,7 @@ public class ScaleIOStorageAdaptor implements StorageAdaptor {
         try {
             String diskFilePath = null;
             String systemId = ScaleIOUtil.getSystemIdForVolume(volumeId);
-            if (!Strings.isNullOrEmpty(systemId) && systemId.length() == ScaleIOUtil.IDENTIFIER_LENGTH) {
+            if (StringUtils.isNotEmpty(systemId) && systemId.length() == ScaleIOUtil.IDENTIFIER_LENGTH) {
                 // Disk path format: /dev/disk/by-id/emc-vol-<SystemID>-<VolumeID>
                 final String diskFileName = ScaleIOUtil.DISK_NAME_PREFIX + systemId + "-" + volumeId;
                 diskFilePath = ScaleIOUtil.DISK_PATH + File.separator + diskFileName;
@@ -135,7 +135,7 @@ public class ScaleIOStorageAdaptor implements StorageAdaptor {
 
     @Override
     public boolean connectPhysicalDisk(String volumePath, KVMStoragePool pool, Map<String, String> details) {
-        if (Strings.isNullOrEmpty(volumePath) || pool == null) {
+        if (StringUtils.isEmpty(volumePath) || pool == null) {
             LOGGER.error("Unable to connect physical disk due to insufficient data");
             throw new CloudRuntimeException("Unable to connect physical disk due to insufficient data");
         }
@@ -145,7 +145,7 @@ public class ScaleIOStorageAdaptor implements StorageAdaptor {
         int waitTimeInSec = DEFAULT_DISK_WAIT_TIME_IN_SECS;
         if (details != null && details.containsKey(StorageManager.STORAGE_POOL_DISK_WAIT.toString())) {
             String waitTime = details.get(StorageManager.STORAGE_POOL_DISK_WAIT.toString());
-            if (!Strings.isNullOrEmpty(waitTime)) {
+            if (StringUtils.isNotEmpty(waitTime)) {
                 waitTimeInSec = Integer.valueOf(waitTime).intValue();
             }
         }
@@ -187,7 +187,7 @@ public class ScaleIOStorageAdaptor implements StorageAdaptor {
     }
 
     private long getPhysicalDiskSize(String diskPath) {
-        if (Strings.isNullOrEmpty(diskPath)) {
+        if (StringUtils.isEmpty(diskPath)) {
             return 0;
         }
 
@@ -244,7 +244,7 @@ public class ScaleIOStorageAdaptor implements StorageAdaptor {
 
     @Override
     public KVMPhysicalDisk copyPhysicalDisk(KVMPhysicalDisk disk, String name, KVMStoragePool destPool, int timeout) {
-        if (Strings.isNullOrEmpty(name) || disk == null || destPool == null) {
+        if (StringUtils.isEmpty(name) || disk == null || destPool == null) {
             LOGGER.error("Unable to copy physical disk due to insufficient data");
             throw new CloudRuntimeException("Unable to copy physical disk due to insufficient data");
         }
@@ -280,7 +280,7 @@ public class ScaleIOStorageAdaptor implements StorageAdaptor {
                 LOGGER.warn("Unable to get info from source disk: " + disk.getName());
             }
 
-            String errMsg = String.format("Unable to convert/copy from %s to %s, due to: %s", disk.getName(), name, ((Strings.isNullOrEmpty(e.getMessage())) ? "an unknown error" : e.getMessage()));
+            String errMsg = String.format("Unable to convert/copy from %s to %s, due to: %s", disk.getName(), name, ((StringUtils.isEmpty(e.getMessage())) ? "an unknown error" : e.getMessage()));
             LOGGER.error(errMsg);
             throw new CloudRuntimeException(errMsg, e);
         }
@@ -315,7 +315,7 @@ public class ScaleIOStorageAdaptor implements StorageAdaptor {
 
     @Override
     public KVMPhysicalDisk createTemplateFromDirectDownloadFile(String templateFilePath, String destTemplatePath, KVMStoragePool destPool, Storage.ImageFormat format, int timeout) {
-        if (Strings.isNullOrEmpty(templateFilePath) || Strings.isNullOrEmpty(destTemplatePath) || destPool == null) {
+        if (StringUtils.isAnyEmpty(templateFilePath, destTemplatePath) || destPool == null) {
             LOGGER.error("Unable to create template from direct download template file due to insufficient data");
             throw new CloudRuntimeException("Unable to create template from direct download template file due to insufficient data");
         }
diff --git a/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/qemu/QemuImg.java b/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/qemu/QemuImg.java
index 7de09a3..53974f6 100644
--- a/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/qemu/QemuImg.java
+++ b/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/qemu/QemuImg.java
@@ -24,7 +24,7 @@ import com.cloud.hypervisor.kvm.resource.LibvirtConnection;
 import com.cloud.storage.Storage;
 import com.cloud.utils.script.OutputInterpreter;
 import com.cloud.utils.script.Script;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang.NotImplementedException;
 import org.libvirt.LibvirtException;
 
diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/guru/VMwareGuru.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/guru/VMwareGuru.java
index d1bce21..ce7da76 100644
--- a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/guru/VMwareGuru.java
+++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/guru/VMwareGuru.java
@@ -45,7 +45,7 @@ import org.apache.cloudstack.storage.to.VolumeObjectTO;
 import org.apache.cloudstack.utils.volume.VirtualMachineDiskInfo;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.BooleanUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.agent.api.BackupSnapshotCommand;
diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
index 8bef787..f403ba0 100644
--- a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
+++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
@@ -165,7 +165,6 @@ import com.cloud.utils.ssh.SshHelper;
 import com.cloud.vm.DomainRouterVO;
 import com.cloud.vm.dao.UserVmCloneSettingDao;
 import com.cloud.vm.dao.VMInstanceDao;
-import com.google.common.base.Strings;
 import com.vmware.pbm.PbmProfile;
 import com.vmware.vim25.AboutInfo;
 import com.vmware.vim25.ManagedObjectReference;
@@ -1274,16 +1273,16 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw
         }
         final String oldVCenterHost = vmwareDc.getVcenterHost();
 
-        if (!Strings.isNullOrEmpty(userName)) {
+        if (StringUtils.isNotEmpty(userName)) {
             vmwareDc.setUser(userName);
         }
-        if (!Strings.isNullOrEmpty(password)) {
+        if (StringUtils.isNotEmpty(password)) {
             vmwareDc.setPassword(password);
         }
-        if (!Strings.isNullOrEmpty(vCenterHost)) {
+        if (StringUtils.isNotEmpty(vCenterHost)) {
             vmwareDc.setVcenterHost(vCenterHost);
         }
-        if (!Strings.isNullOrEmpty(vmwareDcName)) {
+        if (StringUtils.isNotEmpty(vmwareDcName)) {
             vmwareDc.setVmwareDatacenterName(vmwareDcName);
         }
         vmwareDc.setGuid(String.format("%s@%s", vmwareDc.getVmwareDatacenterName(), vmwareDc.getVcenterHost()));
@@ -1298,7 +1297,7 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw
                             clusterDetails.put("username", vmwareDc.getUser());
                             clusterDetails.put("password", vmwareDc.getPassword());
                             final String clusterUrl = clusterDetails.get("url");
-                            if (!oldVCenterHost.equals(vmwareDc.getVcenterHost()) && !Strings.isNullOrEmpty(clusterUrl)) {
+                            if (!oldVCenterHost.equals(vmwareDc.getVcenterHost()) && StringUtils.isNotEmpty(clusterUrl)) {
                                 clusterDetails.put("url", clusterUrl.replace(oldVCenterHost, vmwareDc.getVcenterHost()));
                             }
                             clusterDetailsDao.persist(cluster.getId(), clusterDetails);
@@ -1308,7 +1307,7 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw
                             hostDetails.put("username", vmwareDc.getUser());
                             hostDetails.put("password", vmwareDc.getPassword());
                             final String hostGuid = hostDetails.get("guid");
-                            if (!Strings.isNullOrEmpty(hostGuid)) {
+                            if (StringUtils.isNotEmpty(hostGuid)) {
                                 hostDetails.put("guid", hostGuid.replace(oldVCenterHost, vmwareDc.getVcenterHost()));
                             }
                             hostDetailsDao.persist(host.getId(), hostDetails);
diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
index 9ed1f7d..91904f0 100644
--- a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
+++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
@@ -1191,7 +1191,7 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager {
             for (ManagedObjectReference taskMor : tasks) {
                 TaskInfo info = (TaskInfo)(context.getVimClient().getDynamicProperty(taskMor, "info"));
 
-                if (info.getEntityName().equals(cmd.getVmName()) && StringUtils.isNotBlank(info.getName()) && info.getName().equalsIgnoreCase("CreateSnapshot_Task")) {
+                if (info.getEntityName().equals(cmd.getVmName()) && org.apache.commons.lang3.StringUtils.isNotBlank(info.getName()) && info.getName().equalsIgnoreCase("CreateSnapshot_Task")) {
                     if (!(info.getState().equals(TaskInfoState.SUCCESS) || info.getState().equals(TaskInfoState.ERROR))) {
                         s_logger.debug("There is already a VM snapshot task running, wait for it");
                         context.getVimClient().waitForTask(taskMor);
@@ -1406,7 +1406,7 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager {
             for (ManagedObjectReference taskMor : tasks) {
                 TaskInfo info = (TaskInfo)(context.getVimClient().getDynamicProperty(taskMor, "info"));
 
-                if (info.getEntityName().equals(cmd.getVmName()) && StringUtils.isNotBlank(info.getName()) && info.getName().equalsIgnoreCase("RevertToSnapshot_Task")) {
+                if (info.getEntityName().equals(cmd.getVmName()) && org.apache.commons.lang3.StringUtils.isNotBlank(info.getName()) && info.getName().equalsIgnoreCase("RevertToSnapshot_Task")) {
                     s_logger.debug("There is already a VM snapshot task running, wait for it");
                     context.getVimClient().waitForTask(taskMor);
                 }
diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java
index d1776ea..586c916 100644
--- a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java
+++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java
@@ -63,7 +63,7 @@ import org.apache.cloudstack.vm.UnmanagedInstanceTO;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang.math.NumberUtils;
 import org.apache.log4j.Logger;
 import org.apache.log4j.NDC;
@@ -281,7 +281,6 @@ import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachine.PowerState;
 import com.cloud.vm.VirtualMachineName;
 import com.cloud.vm.VmDetailConstants;
-import com.google.common.base.Strings;
 import com.google.gson.Gson;
 import com.vmware.vim25.AboutInfo;
 import com.vmware.vim25.ArrayUpdateOperation;
@@ -2255,7 +2254,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
                     VirtualDevice device = VmwareHelper.prepareDiskDevice(vmMo, null, controllerKey, diskChain, volumeDsDetails.first(), deviceNumber, i + 1);
 
                     diskStoragePolicyId = volumeTO.getvSphereStoragePolicyId();
-                    if (!StringUtils.isEmpty(diskStoragePolicyId)) {
+                    if (StringUtils.isNotEmpty(diskStoragePolicyId)) {
                         PbmProfileManagerMO profMgrMo = new PbmProfileManagerMO(context);
                         diskProfileSpec = profMgrMo.getProfileSpec(diskStoragePolicyId);
                         deviceConfigSpecArray[i].getProfile().add(diskProfileSpec);
@@ -2338,7 +2337,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
                             }
                         }
 
-                        if (!StringUtils.isBlank(vmSpec.getBootArgs())) {
+                        if (StringUtils.isNotBlank(vmSpec.getBootArgs())) {
                             String newMacSequence = generateMacSequence(nics);
                             vmSpec.setBootArgs(replaceNicsMacSequenceInBootArgs(oldMacSequence, newMacSequence, vmSpec));
                         }
@@ -2440,7 +2439,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
 
             setBootOptions(vmSpec, bootMode, vmConfigSpec);
 
-            if (!StringUtils.isEmpty(vmStoragePolicyId)) {
+            if (StringUtils.isNotEmpty(vmStoragePolicyId)) {
                 vmConfigSpec.getVmProfile().add(vmProfileSpec);
                 if (s_logger.isTraceEnabled()) {
                     s_logger.trace(String.format("Configuring the VM %s with storage policy: %s", vmInternalCSName, vmStoragePolicyId));
@@ -2947,7 +2946,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
      */
     protected String replaceNicsMacSequenceInBootArgs(String oldMacSequence, String newMacSequence, VirtualMachineTO vmSpec) {
         String bootArgs = vmSpec.getBootArgs();
-        if (!StringUtils.isBlank(bootArgs) && !StringUtils.isBlank(oldMacSequence) && !StringUtils.isBlank(newMacSequence)) {
+        if (StringUtils.isNoneBlank(bootArgs, oldMacSequence, newMacSequence)) {
             return bootArgs.replace(oldMacSequence, newMacSequence);
         }
         return "";
@@ -3592,7 +3591,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
      * Ex. "[-iqn.2010-01.com.solidfire:4nhe.vol-1.27-0] i-2-18-VM/ROOT-18.vmdk" should return "i-2-18-VM/ROOT-18"
      */
     public String getVmdkPath(String path) {
-        if (!StringUtils.isNotBlank(path)) {
+        if (StringUtils.isBlank(path)) {
             return null;
         }
 
@@ -4879,7 +4878,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
         VmwareHypervisorHost srcHyperHost = null;
 
         // OfflineVmwareMigration: ifhost is null ???
-        if (org.apache.commons.lang.StringUtils.isBlank(cmd.getAttachedVmName())) {
+        if (StringUtils.isBlank(cmd.getAttachedVmName())) {
             return migrateVolume(cmd);
         }
         ManagedObjectReference morDs = null;
@@ -7230,7 +7229,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
                         instanceDisk.setCapacity(disk.getCapacityInBytes());
                         instanceDisk.setPosition(diskDevice.getUnitNumber());
                         DatastoreFile file = new DatastoreFile(getAbsoluteVmdkFile(disk));
-                        if (!Strings.isNullOrEmpty(file.getFileBaseName()) && !Strings.isNullOrEmpty(file.getDatastoreName())) {
+                        if (StringUtils.isNoneEmpty(file.getFileBaseName(), file.getDatastoreName())) {
                             VirtualMachineDiskInfo diskInfo = vmMo.getDiskInfoBuilder().getDiskInfoByBackingFileBaseName(file.getFileBaseName(), file.getDatastoreName());
                             instanceDisk.setChainInfo(getGson().toJson(diskInfo));
                         }
@@ -7426,19 +7425,19 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
             instance.setCpuSpeed(vmMo.getConfigSummary().getCpuReservation());
             instance.setMemory(vmMo.getConfigSummary().getMemorySizeMB());
             instance.setOperatingSystemId(vmMo.getVmGuestInfo().getGuestId());
-            if (Strings.isNullOrEmpty(instance.getOperatingSystemId())) {
+            if (StringUtils.isEmpty(instance.getOperatingSystemId())) {
                 instance.setOperatingSystemId(vmMo.getConfigSummary().getGuestId());
             }
             VirtualMachineGuestOsIdentifier osIdentifier = VirtualMachineGuestOsIdentifier.OTHER_GUEST;
             try {
                 osIdentifier = VirtualMachineGuestOsIdentifier.fromValue(instance.getOperatingSystemId());
             } catch (IllegalArgumentException iae) {
-                if (!Strings.isNullOrEmpty(instance.getOperatingSystemId()) && instance.getOperatingSystemId().contains("64")) {
+                if (StringUtils.isNotEmpty(instance.getOperatingSystemId()) && instance.getOperatingSystemId().contains("64")) {
                     osIdentifier = VirtualMachineGuestOsIdentifier.OTHER_GUEST_64;
                 }
             }
             instance.setOperatingSystem(vmMo.getGuestInfo().getGuestFullName());
-            if (Strings.isNullOrEmpty(instance.getOperatingSystem())) {
+            if (StringUtils.isEmpty(instance.getOperatingSystem())) {
                 instance.setOperatingSystem(vmMo.getConfigSummary().getGuestFullName());
             }
             UnmanagedInstanceTO.PowerState powerState = UnmanagedInstanceTO.PowerState.PowerUnknown;
@@ -7483,7 +7482,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
                     continue;
                 }
                 // Filter instance if answer is requested for a particular instance name
-                if (!Strings.isNullOrEmpty(cmd.getInstanceName()) &&
+                if (StringUtils.isNotEmpty(cmd.getInstanceName()) &&
                         !cmd.getInstanceName().equals(vmMo.getVmName())) {
                     continue;
                 }
diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareStorageProcessor.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareStorageProcessor.java
index b3ab3fe..c0aaf0e 100644
--- a/plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareStorageProcessor.java
+++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareStorageProcessor.java
@@ -57,7 +57,7 @@ import org.apache.cloudstack.storage.to.SnapshotObjectTO;
 import org.apache.cloudstack.storage.to.TemplateObjectTO;
 import org.apache.cloudstack.storage.to.VolumeObjectTO;
 import org.apache.cloudstack.utils.volume.VirtualMachineDiskInfo;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.agent.api.Answer;
@@ -103,7 +103,6 @@ import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.script.Script;
 import com.cloud.vm.VirtualMachine.PowerState;
 import com.cloud.vm.VmDetailConstants;
-import com.google.common.base.Strings;
 import com.google.gson.Gson;
 import com.vmware.vim25.BaseConfigInfoDiskFileBackingInfo;
 import com.vmware.vim25.DatastoreHostMount;
@@ -2186,7 +2185,7 @@ public class VmwareStorageProcessor implements StorageProcessor {
             if (isAttach) {
                 String diskController = getLegacyVmDataDiskController();
 
-                if (controllerInfo != null && !Strings.isNullOrEmpty(controllerInfo.get(VmDetailConstants.DATA_DISK_CONTROLLER))) {
+                if (controllerInfo != null && StringUtils.isNotEmpty(controllerInfo.get(VmDetailConstants.DATA_DISK_CONTROLLER))) {
                     diskController = controllerInfo.get(VmDetailConstants.DATA_DISK_CONTROLLER);
                 }
 
@@ -2780,7 +2779,7 @@ public class VmwareStorageProcessor implements StorageProcessor {
         target.setPort(storagePortNumber);
         target.setIScsiName(iqn);
 
-        if (StringUtils.isNotBlank(chapName) && StringUtils.isNotBlank(chapSecret)) {
+        if (StringUtils.isNoneBlank(chapName, chapSecret)) {
             HostInternetScsiHbaAuthenticationProperties auth = new HostInternetScsiHbaAuthenticationProperties();
 
             String strAuthType = "chapRequired";
@@ -2791,7 +2790,7 @@ public class VmwareStorageProcessor implements StorageProcessor {
             auth.setChapName(chapName);
             auth.setChapSecret(chapSecret);
 
-            if (StringUtils.isNotBlank(mutualChapName) && StringUtils.isNotBlank(mutualChapSecret)) {
+            if (StringUtils.isNoneBlank(mutualChapName, mutualChapSecret)) {
                 auth.setMutualChapInherited(false);
                 auth.setMutualChapAuthenticationType(strAuthType);
                 auth.setMutualChapName(mutualChapName);
diff --git a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java
index c77ac44..65eba99 100644
--- a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java
+++ b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java
@@ -33,7 +33,7 @@ import org.apache.cloudstack.storage.command.DettachCommand;
 import org.apache.cloudstack.storage.command.StorageSubSystemCommand;
 import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.agent.api.Command;
diff --git a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
index a971576..c3987fd 100644
--- a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
+++ b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
@@ -63,6 +63,7 @@ import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.BooleanUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.xmlrpc.XmlRpcException;
 import org.joda.time.Duration;
@@ -134,7 +135,6 @@ import com.cloud.utils.ExecutionResult;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
 import com.cloud.utils.PropertiesUtil;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.Ternary;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.net.NetUtils;
@@ -654,7 +654,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
 
                 // there is only one ip in this public vlan and removing it, so
                 // remove the nic
-                if (org.apache.commons.lang.StringUtils.equalsIgnoreCase(lastIp, "true") && !ip.isAdd()) {
+                if (StringUtils.equalsIgnoreCase(lastIp, "true") && !ip.isAdd()) {
                     final VIF correctVif = getCorrectVif(conn, router, network);
                     // in isolated network eth2 is the default public interface. We don't want to delete it.
                     if (correctVif != null && !correctVif.getDevice(conn).equals("2")) {
@@ -784,11 +784,11 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
                     if (record.isControlDomain || record.isASnapshot || record.isATemplate) {
                         continue; // Skip DOM0
                     }
-                    final String platform = StringUtils.mapToString(record.platform);
+                    final String platform = com.cloud.utils.StringUtils.mapToString(record.platform);
                     if (platform.isEmpty()) {
                         continue; //Skip if platform is null
                     }
-                    vmMetaDatum.put(record.nameLabel, StringUtils.mapToString(record.platform));
+                    vmMetaDatum.put(record.nameLabel, com.cloud.utils.StringUtils.mapToString(record.platform));
                 }
             }
         } catch (final Throwable e) {
@@ -1426,7 +1426,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             throw new CloudRuntimeException("Unable to finalize VM MetaData: " + vmSpec);
         }
         try {
-            String bootMode = org.apache.commons.lang3.StringUtils.defaultIfEmpty(vmSpec.getDetails().get(ApiConstants.BootType.UEFI.toString()), null);
+            String bootMode = StringUtils.defaultIfEmpty(vmSpec.getDetails().get(ApiConstants.BootType.UEFI.toString()), null);
             String bootType = (bootMode == null) ? ApiConstants.BootType.BIOS.toString() : ApiConstants.BootType.UEFI.toString();
             setVmBootDetails(vm, conn, bootType, bootMode);
         } catch (final XenAPIException | XmlRpcException e) {
@@ -1905,7 +1905,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
         if (details != null) {
             final String platformstring = details.get(VmDetailConstants.PLATFORM);
             if (platformstring != null && !platformstring.isEmpty()) {
-                final Map<String, String> platform = StringUtils.stringToMap(platformstring);
+                final Map<String, String> platform = com.cloud.utils.StringUtils.stringToMap(platformstring);
                 vm.setPlatform(conn, platform);
             } else {
                 final String timeoffset = details.get(VmDetailConstants.TIME_OFFSET);
@@ -2139,7 +2139,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
     }
 
     protected String getGuestOsType(String platformEmulator) {
-        if (org.apache.commons.lang.StringUtils.isBlank(platformEmulator)) {
+        if (StringUtils.isBlank(platformEmulator)) {
             s_logger.debug("no guest OS type, start it as HVM guest");
             platformEmulator = "Other install media";
         }
@@ -2417,7 +2417,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
                 deviceConfig.put("target", target);
                 deviceConfig.put("targetIQN", targetiqn);
 
-                if (StringUtils.isNotBlank(chapInitiatorUsername) && StringUtils.isNotBlank(chapInitiatorPassword)) {
+                if (StringUtils.isNoneBlank(chapInitiatorUsername, chapInitiatorPassword)) {
                     deviceConfig.put("chapuser", chapInitiatorUsername);
                     deviceConfig.put("chappassword", chapInitiatorPassword);
                 }
@@ -3709,7 +3709,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             }
             for (PBD pbd : pbds) {
                 Host host = pbd.getHost(conn);
-                if (!isRefNull(host) && org.apache.commons.lang3.StringUtils.equals(host.getUuid(conn), _host.getUuid())) {
+                if (!isRefNull(host) && StringUtils.equals(host.getUuid(conn), _host.getUuid())) {
                     if (!pbd.getCurrentlyAttached(conn)) {
                         s_logger.debug(String.format("PBD [%s] of local SR [%s] was unplugged, pluggin it now", pbd.getUuid(conn), srRec.uuid));
                         pbd.plug(conn);
@@ -5672,7 +5672,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             secondaryStorageMountPath = uri.getHost() + ":" + uri.getPath();
             localDir = BASE_MOUNT_POINT_ON_REMOTE + UUID.nameUUIDFromBytes(secondaryStorageMountPath.getBytes());
             String mountPoint = mountNfs(conn, secondaryStorageMountPath, localDir);
-            if (org.apache.commons.lang.StringUtils.isBlank(mountPoint)) {
+            if (StringUtils.isBlank(mountPoint)) {
                 return new CopyToSecondaryStorageAnswer(cmd, false, "Could not mount secondary storage " + secondaryStorageMountPath + " on host " + localDir);
             }
 
@@ -5711,7 +5711,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             localDir = BASE_MOUNT_POINT_ON_REMOTE + UUID.nameUUIDFromBytes(remoteDir.getBytes());
         }
         String result = callHostPlugin(conn, "cloud-plugin-storage", "umountNfsSecondaryStorage", "localDir", localDir, "remoteDir", remoteDir);
-        if (org.apache.commons.lang.StringUtils.isBlank(result)) {
+        if (StringUtils.isBlank(result)) {
             String errMsg = "Could not umount secondary storage " + remoteDir + " on host " + localDir;
             s_logger.warn(errMsg);
         }
diff --git a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/Xenserver625StorageProcessor.java b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/Xenserver625StorageProcessor.java
index 7e2c701..3f4e8bd 100644
--- a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/Xenserver625StorageProcessor.java
+++ b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/Xenserver625StorageProcessor.java
@@ -37,7 +37,7 @@ import org.apache.cloudstack.storage.to.TemplateObjectTO;
 import org.apache.cloudstack.storage.to.VolumeObjectTO;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.MapUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.xmlrpc.XmlRpcException;
 
diff --git a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/XenServerUtilitiesHelper.java b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/XenServerUtilitiesHelper.java
index 56b16cc..5248116 100644
--- a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/XenServerUtilitiesHelper.java
+++ b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/XenServerUtilitiesHelper.java
@@ -20,7 +20,7 @@ import java.io.File;
 
 import com.cloud.utils.Pair;
 import com.cloud.utils.ssh.SshHelper;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 
 /**
@@ -45,6 +45,6 @@ public class XenServerUtilitiesHelper {
     }
 
     public static boolean isXenServerToolsSR(final String label) {
-        return !Strings.isNullOrEmpty(label) && (label.startsWith("XenServer Tools") || label.startsWith("Citrix Hypervisor Tools") || label.startsWith("XCP-ng Tools"));
+        return StringUtils.isNotEmpty(label) && (label.startsWith("XenServer Tools") || label.startsWith("Citrix Hypervisor Tools") || label.startsWith("XCP-ng Tools"));
     }
 }
diff --git a/plugins/hypervisors/xenserver/src/main/java/org/apache/cloudstack/storage/motion/XenServerStorageMotionStrategy.java b/plugins/hypervisors/xenserver/src/main/java/org/apache/cloudstack/storage/motion/XenServerStorageMotionStrategy.java
index 9d93f97..dbfcfe9 100644
--- a/plugins/hypervisors/xenserver/src/main/java/org/apache/cloudstack/storage/motion/XenServerStorageMotionStrategy.java
+++ b/plugins/hypervisors/xenserver/src/main/java/org/apache/cloudstack/storage/motion/XenServerStorageMotionStrategy.java
@@ -36,6 +36,7 @@ import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo;
 import org.apache.cloudstack.framework.async.AsyncCompletionCallback;
 import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
 import org.apache.cloudstack.storage.to.VolumeObjectTO;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
@@ -68,7 +69,6 @@ import com.cloud.storage.dao.SnapshotDao;
 import com.cloud.storage.dao.VolumeDao;
 import com.cloud.storage.dao.VolumeDetailsDao;
 import com.cloud.utils.Pair;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.vm.VMInstanceVO;
 import com.cloud.vm.dao.VMInstanceDao;
diff --git a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/XenServerGuruTest.java b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/XenServerGuruTest.java
index 84ce99b..cc66214 100644
--- a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/XenServerGuruTest.java
+++ b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/XenServerGuruTest.java
@@ -21,7 +21,7 @@ import org.apache.cloudstack.hypervisor.xenserver.XenserverConfigs;
 import org.apache.cloudstack.storage.command.CopyCommand;
 import org.apache.cloudstack.storage.command.StorageSubSystemCommand;
 import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/Xenserver625StorageProcessorTest.java b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/Xenserver625StorageProcessorTest.java
index 7022e6d..0705194 100644
--- a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/Xenserver625StorageProcessorTest.java
+++ b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/Xenserver625StorageProcessorTest.java
@@ -28,7 +28,7 @@ import java.util.HashSet;
 import java.util.Set;
 import java.util.UUID;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.xmlrpc.XmlRpcException;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/plugins/integrations/cloudian/src/main/java/org/apache/cloudstack/cloudian/api/CloudianSsoLoginCmd.java b/plugins/integrations/cloudian/src/main/java/org/apache/cloudstack/cloudian/api/CloudianSsoLoginCmd.java
index 7bdd7fd..3cf2d29 100644
--- a/plugins/integrations/cloudian/src/main/java/org/apache/cloudstack/cloudian/api/CloudianSsoLoginCmd.java
+++ b/plugins/integrations/cloudian/src/main/java/org/apache/cloudstack/cloudian/api/CloudianSsoLoginCmd.java
@@ -28,7 +28,7 @@ import org.apache.cloudstack.cloudian.CloudianConnector;
 import org.apache.cloudstack.cloudian.response.CloudianSsoLoginResponse;
 
 import com.cloud.user.Account;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 @APICommand(name = CloudianSsoLoginCmd.APINAME, description = "Generates single-sign-on login url for logged-in CloudStack user to access the Cloudian Management Console",
         responseObject = CloudianSsoLoginResponse.class,
@@ -58,7 +58,7 @@ public class CloudianSsoLoginCmd extends BaseCmd {
     @Override
     public void execute() {
         final String ssoUrl = connector.generateSsoUrl();
-        if (Strings.isNullOrEmpty(ssoUrl)) {
+        if (StringUtils.isEmpty(ssoUrl)) {
             throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to generate Cloudian single-sign on URL for the user");
         }
         final CloudianSsoLoginResponse response = new CloudianSsoLoginResponse();
diff --git a/plugins/integrations/cloudian/src/main/java/org/apache/cloudstack/cloudian/client/CloudianClient.java b/plugins/integrations/cloudian/src/main/java/org/apache/cloudstack/cloudian/client/CloudianClient.java
index 45d0964..8d810f6 100644
--- a/plugins/integrations/cloudian/src/main/java/org/apache/cloudstack/cloudian/client/CloudianClient.java
+++ b/plugins/integrations/cloudian/src/main/java/org/apache/cloudstack/cloudian/client/CloudianClient.java
@@ -60,7 +60,7 @@ import org.apache.log4j.Logger;
 
 import com.cloud.utils.nio.TrustAllManager;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public class CloudianClient {
     private static final Logger LOG = Logger.getLogger(CloudianClient.class);
@@ -190,7 +190,7 @@ public class CloudianClient {
     }
 
     public CloudianUser listUser(final String userId, final String groupId) {
-        if (Strings.isNullOrEmpty(userId) || Strings.isNullOrEmpty(groupId)) {
+        if (StringUtils.isAnyEmpty(userId, groupId)) {
             return null;
         }
         LOG.debug("Trying to find Cloudian user with id=" + userId + " and group id=" + groupId);
@@ -210,7 +210,7 @@ public class CloudianClient {
     }
 
     public List<CloudianUser> listUsers(final String groupId) {
-        if (Strings.isNullOrEmpty(groupId)) {
+        if (StringUtils.isEmpty(groupId)) {
             return new ArrayList<>();
         }
         LOG.debug("Trying to list Cloudian users in group id=" + groupId);
@@ -245,7 +245,7 @@ public class CloudianClient {
     }
 
     public boolean removeUser(final String userId, final String groupId) {
-        if (Strings.isNullOrEmpty(userId) || Strings.isNullOrEmpty(groupId)) {
+        if (StringUtils.isAnyEmpty(userId, groupId)) {
             return false;
         }
         LOG.debug("Removing Cloudian user with user id=" + userId + " in group id=" + groupId);
@@ -279,7 +279,7 @@ public class CloudianClient {
     }
 
     public CloudianGroup listGroup(final String groupId) {
-        if (Strings.isNullOrEmpty(groupId)) {
+        if (StringUtils.isEmpty(groupId)) {
             return null;
         }
         LOG.debug("Trying to find Cloudian group with id=" + groupId);
@@ -331,7 +331,7 @@ public class CloudianClient {
     }
 
     public boolean removeGroup(final String groupId) {
-        if (Strings.isNullOrEmpty(groupId)) {
+        if (StringUtils.isEmpty(groupId)) {
             return false;
         }
         LOG.debug("Removing Cloudian group id=" + groupId);
diff --git a/plugins/integrations/cloudian/src/main/java/org/apache/cloudstack/cloudian/client/CloudianUtils.java b/plugins/integrations/cloudian/src/main/java/org/apache/cloudstack/cloudian/client/CloudianUtils.java
index faca579..0ef0fc9 100644
--- a/plugins/integrations/cloudian/src/main/java/org/apache/cloudstack/cloudian/client/CloudianUtils.java
+++ b/plugins/integrations/cloudian/src/main/java/org/apache/cloudstack/cloudian/client/CloudianUtils.java
@@ -27,7 +27,7 @@ import org.apache.commons.codec.binary.Base64;
 import org.apache.log4j.Logger;
 
 import com.cloud.utils.HttpUtils;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public class CloudianUtils {
 
@@ -41,7 +41,7 @@ public class CloudianUtils {
      * @return returns the generated signature or null on error
      */
     public static String generateHMACSignature(final String data, final String key) {
-        if (Strings. isNullOrEmpty(data) || Strings.isNullOrEmpty(key)) {
+        if (StringUtils.isAnyEmpty(data, key)) {
             return null;
         }
         try {
@@ -70,7 +70,7 @@ public class CloudianUtils {
         stringBuilder.append("&timestamp=").append(System.currentTimeMillis());
 
         final String signature = generateHMACSignature(stringBuilder.toString(), ssoKey);
-        if (Strings.isNullOrEmpty(signature)) {
+        if (StringUtils.isEmpty(signature)) {
             return null;
         }
 
diff --git a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java
index aec96fe..c11b19c 100644
--- a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java
+++ b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java
@@ -164,7 +164,7 @@ import com.cloud.utils.net.NetUtils;
 import com.cloud.vm.VMInstanceVO;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.dao.VMInstanceDao;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 import static com.cloud.utils.NumbersUtil.toHumanReadableSize;
 
@@ -475,7 +475,7 @@ public class KubernetesClusterManagerImpl extends ManagerBase implements Kuberne
                 Pair<HostVO, Integer> hp = hostEntry.getValue();
                 HostVO h = hp.first();
                 hostDao.loadHostTags(h);
-                if (!Strings.isNullOrEmpty(offering.getHostTag()) && !(h.getHostTags() != null && h.getHostTags().contains(offering.getHostTag()))) {
+                if (StringUtils.isNotEmpty(offering.getHostTag()) && !(h.getHostTags() != null && h.getHostTags().contains(offering.getHostTag()))) {
                     continue;
                 }
                 int reserved = hp.second();
@@ -716,7 +716,7 @@ public class KubernetesClusterManagerImpl extends ManagerBase implements Kuberne
             }
         }
 
-        if (!Strings.isNullOrEmpty(externalLoadBalancerIpAddress)) {
+        if (StringUtils.isNotEmpty(externalLoadBalancerIpAddress)) {
             if (!NetUtils.isValidIp4(externalLoadBalancerIpAddress) && !NetUtils.isValidIp6(externalLoadBalancerIpAddress)) {
                 throw new InvalidParameterValueException("Invalid external load balancer IP address");
             }
@@ -728,8 +728,7 @@ public class KubernetesClusterManagerImpl extends ManagerBase implements Kuberne
             }
         }
 
-        if (!KubernetesClusterExperimentalFeaturesEnabled.value() && (!Strings.isNullOrEmpty(dockerRegistryUrl) ||
-                !Strings.isNullOrEmpty(dockerRegistryUserName) || !Strings.isNullOrEmpty(dockerRegistryEmail) || !Strings.isNullOrEmpty(dockerRegistryPassword))) {
+        if (!KubernetesClusterExperimentalFeaturesEnabled.value() && !StringUtils.isAllEmpty(dockerRegistryUrl, dockerRegistryUserName, dockerRegistryEmail, dockerRegistryPassword)) {
             throw new CloudRuntimeException(String.format("Private registry for the Kubernetes cluster is an experimental feature. Use %s configuration for enabling experimental features", KubernetesClusterExperimentalFeaturesEnabled.key()));
         }
     }
@@ -749,7 +748,7 @@ public class KubernetesClusterManagerImpl extends ManagerBase implements Kuberne
                     throw new InvalidParameterValueException(String.format("Network ID: %s is already under use by another Kubernetes cluster", network.getUuid()));
                 }
             } else if (Network.GuestType.Shared.equals(network.getGuestType())) {
-                if (controlNodesCount > 1 && Strings.isNullOrEmpty(externalLoadBalancerIpAddress)) {
+                if (controlNodesCount > 1 && StringUtils.isEmpty(externalLoadBalancerIpAddress)) {
                     throw new InvalidParameterValueException(String.format("Multi-control nodes, HA Kubernetes cluster with %s network ID: %s needs an external load balancer IP address. %s parameter can be used",
                             network.getGuestType().toString(), network.getUuid(), ApiConstants.EXTERNAL_LOAD_BALANCER_IP_ADDRESS));
                 }
@@ -785,31 +784,33 @@ public class KubernetesClusterManagerImpl extends ManagerBase implements Kuberne
             @Override
             public void doInTransactionWithoutResult(TransactionStatus status) {
                 List<KubernetesClusterDetailsVO> details = new ArrayList<>();
-                if (Network.GuestType.Shared.equals(network.getGuestType()) && !Strings.isNullOrEmpty(externalLoadBalancerIpAddress)) {
-                    details.add(new KubernetesClusterDetailsVO(kubernetesCluster.getId(), ApiConstants.EXTERNAL_LOAD_BALANCER_IP_ADDRESS, externalLoadBalancerIpAddress, true));
-                }
-                if (!Strings.isNullOrEmpty(dockerRegistryUserName)) {
-                    details.add(new KubernetesClusterDetailsVO(kubernetesCluster.getId(), ApiConstants.DOCKER_REGISTRY_USER_NAME, dockerRegistryUserName, true));
-                }
-                if (!Strings.isNullOrEmpty(dockerRegistryPassword)) {
-                    details.add(new KubernetesClusterDetailsVO(kubernetesCluster.getId(), ApiConstants.DOCKER_REGISTRY_PASSWORD, dockerRegistryPassword, false));
-                }
-                if (!Strings.isNullOrEmpty(dockerRegistryUrl)) {
-                    details.add(new KubernetesClusterDetailsVO(kubernetesCluster.getId(), ApiConstants.DOCKER_REGISTRY_URL, dockerRegistryUrl, true));
-                }
-                if (!Strings.isNullOrEmpty(dockerRegistryEmail)) {
-                    details.add(new KubernetesClusterDetailsVO(kubernetesCluster.getId(), ApiConstants.DOCKER_REGISTRY_EMAIL, dockerRegistryEmail, true));
+                long kubernetesClusterId = kubernetesCluster.getId();
+
+                if (Network.GuestType.Shared.equals(network.getGuestType())) {
+                    addKubernetesClusterDetailIfIsNotEmpty(details, kubernetesClusterId, ApiConstants.EXTERNAL_LOAD_BALANCER_IP_ADDRESS, externalLoadBalancerIpAddress, true);
                 }
-                details.add(new KubernetesClusterDetailsVO(kubernetesCluster.getId(), ApiConstants.USERNAME, "admin", true));
+
+                addKubernetesClusterDetailIfIsNotEmpty(details, kubernetesClusterId, ApiConstants.DOCKER_REGISTRY_USER_NAME, dockerRegistryUserName, true);
+                addKubernetesClusterDetailIfIsNotEmpty(details, kubernetesClusterId, ApiConstants.DOCKER_REGISTRY_PASSWORD, dockerRegistryPassword, false);
+                addKubernetesClusterDetailIfIsNotEmpty(details, kubernetesClusterId, ApiConstants.DOCKER_REGISTRY_URL, dockerRegistryUrl, true);
+                addKubernetesClusterDetailIfIsNotEmpty(details, kubernetesClusterId, ApiConstants.DOCKER_REGISTRY_EMAIL, dockerRegistryEmail, true);
+
+                details.add(new KubernetesClusterDetailsVO(kubernetesClusterId, ApiConstants.USERNAME, "admin", true));
                 SecureRandom random = new SecureRandom();
                 String randomPassword = new BigInteger(130, random).toString(32);
-                details.add(new KubernetesClusterDetailsVO(kubernetesCluster.getId(), ApiConstants.PASSWORD, randomPassword, false));
-                details.add(new KubernetesClusterDetailsVO(kubernetesCluster.getId(), "networkCleanup", String.valueOf(networkCleanup), true));
+                details.add(new KubernetesClusterDetailsVO(kubernetesClusterId, ApiConstants.PASSWORD, randomPassword, false));
+                details.add(new KubernetesClusterDetailsVO(kubernetesClusterId, "networkCleanup", String.valueOf(networkCleanup), true));
                 kubernetesClusterDetailsDao.saveDetails(details);
             }
         });
     }
 
+    protected void addKubernetesClusterDetailIfIsNotEmpty(List<KubernetesClusterDetailsVO> details, long id, String name, String value, boolean display) {
+        if (StringUtils.isNotEmpty(value)) {
+            details.add(new KubernetesClusterDetailsVO(id, name, value, display));
+        }
+    }
+
     private void validateKubernetesClusterScaleParameters(ScaleKubernetesClusterCmd cmd) {
         final Long kubernetesClusterId = cmd.getId();
         final Long serviceOfferingId = cmd.getServiceOfferingId();
@@ -1145,7 +1146,7 @@ public class KubernetesClusterManagerImpl extends ManagerBase implements Kuberne
         } else {
             String apiKey = kubeadmin.getApiKey();
             String secretKey = kubeadmin.getSecretKey();
-            if (Strings.isNullOrEmpty(apiKey) || Strings.isNullOrEmpty(secretKey)) {
+            if (StringUtils.isAnyEmpty(apiKey, secretKey)) {
                 keys = accountService.createApiKeyAndSecretKey(kubeadmin.getId());
             } else {
                 keys = new String[]{apiKey, secretKey};
@@ -1262,7 +1263,7 @@ public class KubernetesClusterManagerImpl extends ManagerBase implements Kuberne
         response.setName(kubernetesCluster.getName());
         String configData = "";
         KubernetesClusterDetailsVO clusterDetailsVO = kubernetesClusterDetailsDao.findDetail(kubernetesCluster.getId(), "kubeConfigData");
-        if (clusterDetailsVO != null && !Strings.isNullOrEmpty(clusterDetailsVO.getValue())) {
+        if (clusterDetailsVO != null && StringUtils.isNotEmpty(clusterDetailsVO.getValue())) {
             configData = new String(Base64.decodeBase64(clusterDetailsVO.getValue()));
         } else {
             String exceptionMessage = KubernetesCluster.State.Starting.equals(kubernetesCluster.getState()) ?
diff --git a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterActionWorker.java b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterActionWorker.java
index 62d45a3..2399981 100644
--- a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterActionWorker.java
+++ b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterActionWorker.java
@@ -35,6 +35,7 @@ import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationSe
 import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 
@@ -70,7 +71,6 @@ import com.cloud.user.dao.AccountDao;
 import com.cloud.user.dao.SSHKeyPairDao;
 import com.cloud.uservm.UserVm;
 import com.cloud.utils.Pair;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.db.Transaction;
 import com.cloud.utils.db.TransactionCallback;
 import com.cloud.utils.db.TransactionStatus;
@@ -81,7 +81,6 @@ import com.cloud.utils.ssh.SshHelper;
 import com.cloud.vm.UserVmService;
 import com.cloud.vm.VirtualMachineManager;
 import com.cloud.vm.dao.UserVmDao;
-import com.google.common.base.Strings;
 
 public class KubernetesClusterActionWorker {
 
@@ -172,7 +171,7 @@ public class KubernetesClusterActionWorker {
     }
 
     protected String readResourceFile(String resource) throws IOException {
-        return IOUtils.toString(Objects.requireNonNull(Thread.currentThread().getContextClassLoader().getResourceAsStream(resource)), StringUtils.getPreferredCharset());
+        return IOUtils.toString(Objects.requireNonNull(Thread.currentThread().getContextClassLoader().getResourceAsStream(resource)), com.cloud.utils.StringUtils.getPreferredCharset());
     }
 
     protected void logMessage(final Level logLevel, final String message, final Exception e) {
@@ -298,7 +297,7 @@ public class KubernetesClusterActionWorker {
     protected Pair<String, Integer> getKubernetesClusterServerIpSshPort(UserVm controlVm) {
         int port = CLUSTER_NODES_DEFAULT_START_SSH_PORT;
         KubernetesClusterDetailsVO detail = kubernetesClusterDetailsDao.findDetail(kubernetesCluster.getId(), ApiConstants.EXTERNAL_LOAD_BALANCER_IP_ADDRESS);
-        if (detail != null && !Strings.isNullOrEmpty(detail.getValue())) {
+        if (detail != null && StringUtils.isNotEmpty(detail.getValue())) {
             return new Pair<>(detail.getValue(), port);
         }
         Network network = networkDao.findById(kubernetesCluster.getNetworkId());
diff --git a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterResourceModifierActionWorker.java b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterResourceModifierActionWorker.java
index 595aab9..1ffc62e 100644
--- a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterResourceModifierActionWorker.java
+++ b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterResourceModifierActionWorker.java
@@ -82,7 +82,6 @@ import com.cloud.user.Account;
 import com.cloud.user.SSHKeyPairVO;
 import com.cloud.uservm.UserVm;
 import com.cloud.utils.Pair;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.component.ComponentContext;
 import com.cloud.utils.db.Transaction;
 import com.cloud.utils.db.TransactionCallback;
@@ -96,7 +95,7 @@ import com.cloud.vm.Nic;
 import com.cloud.vm.UserVmManager;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.dao.VMInstanceDao;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 import static com.cloud.utils.NumbersUtil.toHumanReadableSize;
 
@@ -154,7 +153,7 @@ public class KubernetesClusterResourceModifierActionWorker extends KubernetesClu
         final String ejectIsoKey = "{{ k8s.eject.iso }}";
         String pubKey = "- \"" + configurationDao.getValue("ssh.publickey") + "\"";
         String sshKeyPair = kubernetesCluster.getKeyPair();
-        if (!Strings.isNullOrEmpty(sshKeyPair)) {
+        if (StringUtils.isNotEmpty(sshKeyPair)) {
             SSHKeyPairVO sshkp = sshKeyPairDao.findByName(owner.getAccountId(), owner.getDomainId(), sshKeyPair);
             if (sshkp != null) {
                 pubKey += "\n      - \"" + sshkp.getPublicKey() + "\"";
@@ -185,7 +184,7 @@ public class KubernetesClusterResourceModifierActionWorker extends KubernetesClu
                 dockerRegistryEmail = detail.getValue();
             }
         }
-        if (!Strings.isNullOrEmpty(dockerUserName) && !Strings.isNullOrEmpty(dockerPassword)) {
+        if (StringUtils.isNoneEmpty(dockerUserName, dockerPassword)) {
             // do write file for  /.docker/config.json through the code instead of k8s-node.yml as we can no make a section
             // optional or conditionally applied
             String dockerConfigString = "write_files:\n" +
@@ -206,7 +205,7 @@ public class KubernetesClusterResourceModifierActionWorker extends KubernetesClu
             final String dockerAuthKey = "{{docker.secret}}";
             final String dockerEmailKey = "{{docker.email}}";
             final String usernamePasswordKey = dockerUserName + ":" + dockerPassword;
-            String base64Auth = Base64.encodeBase64String(usernamePasswordKey.getBytes(StringUtils.getPreferredCharset()));
+            String base64Auth = Base64.encodeBase64String(usernamePasswordKey.getBytes(com.cloud.utils.StringUtils.getPreferredCharset()));
             k8sNodeConfig = k8sNodeConfig.replace(dockerUrlKey, "\"" + dockerRegistryUrl + "\"");
             k8sNodeConfig = k8sNodeConfig.replace(dockerAuthKey, "\"" + base64Auth + "\"");
             k8sNodeConfig = k8sNodeConfig.replace(dockerEmailKey, "\"" + dockerRegistryEmail + "\"");
@@ -232,7 +231,7 @@ public class KubernetesClusterResourceModifierActionWorker extends KubernetesClu
                     continue;
                 }
                 hostDao.loadHostTags(h);
-                if (!Strings.isNullOrEmpty(offering.getHostTag()) && !(h.getHostTags() != null && h.getHostTags().contains(offering.getHostTag()))) {
+                if (StringUtils.isNotEmpty(offering.getHostTag()) && !(h.getHostTags() != null && h.getHostTags().contains(offering.getHostTag()))) {
                     continue;
                 }
                 int reserved = hp.second();
@@ -377,7 +376,7 @@ public class KubernetesClusterResourceModifierActionWorker extends KubernetesClu
         } catch (IOException e) {
             logAndThrow(Level.ERROR, "Failed to read Kubernetes node configuration file", e);
         }
-        String base64UserData = Base64.encodeBase64String(k8sNodeConfig.getBytes(StringUtils.getPreferredCharset()));
+        String base64UserData = Base64.encodeBase64String(k8sNodeConfig.getBytes(com.cloud.utils.StringUtils.getPreferredCharset()));
         nodeVm = userVmService.createAdvancedVirtualMachine(zone, serviceOffering, clusterTemplate, networkIds, owner,
                 hostName, hostName, null, null, null,
                 Hypervisor.HypervisorType.None, BaseCmd.HTTPMethod.POST, base64UserData, kubernetesCluster.getKeyPair(),
diff --git a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterScaleWorker.java b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterScaleWorker.java
index 0c2c17d..a68962d 100644
--- a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterScaleWorker.java
+++ b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterScaleWorker.java
@@ -57,7 +57,7 @@ import com.cloud.vm.UserVmVO;
 import com.cloud.vm.VMInstanceVO;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.dao.VMInstanceDao;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public class KubernetesClusterScaleWorker extends KubernetesClusterResourceModifierActionWorker {
 
@@ -186,7 +186,7 @@ public class KubernetesClusterScaleWorker extends KubernetesClusterResourceModif
         File pkFile = getManagementServerSshPublicKeyFile();
         int retryCounter = 0;
         String hostName = userVm.getHostName();
-        if (!Strings.isNullOrEmpty(hostName)) {
+        if (StringUtils.isNotEmpty(hostName)) {
             hostName = hostName.toLowerCase();
         }
         while (retryCounter < retries) {
@@ -394,7 +394,7 @@ public class KubernetesClusterScaleWorker extends KubernetesClusterResourceModif
         Pair<String, Integer> publicIpSshPort = getKubernetesClusterServerIpSshPort(null);
         publicIpAddress = publicIpSshPort.first();
         sshPort = publicIpSshPort.second();
-        if (Strings.isNullOrEmpty(publicIpAddress)) {
+        if (StringUtils.isEmpty(publicIpAddress)) {
             logTransitStateToFailedIfNeededAndThrow(Level.ERROR, String.format("Scaling failed for Kubernetes cluster : %s, unable to retrieve associated public IP", kubernetesCluster.getName()));
         }
         if (newVmRequiredCount < 0) { // downscale
diff --git a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterStartWorker.java b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterStartWorker.java
index b6da75d..dc34d37 100644
--- a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterStartWorker.java
+++ b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterStartWorker.java
@@ -65,7 +65,6 @@ import com.cloud.user.Account;
 import com.cloud.user.SSHKeyPairVO;
 import com.cloud.uservm.UserVm;
 import com.cloud.utils.Pair;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.net.Ip;
 import com.cloud.utils.net.NetUtils;
@@ -74,7 +73,7 @@ import com.cloud.vm.ReservationContext;
 import com.cloud.vm.ReservationContextImpl;
 import com.cloud.vm.UserVmManager;
 import com.cloud.vm.VirtualMachine;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public class KubernetesClusterStartWorker extends KubernetesClusterResourceModifierActionWorker {
 
@@ -156,7 +155,7 @@ public class KubernetesClusterStartWorker extends KubernetesClusterResourceModif
         k8sControlNodeConfig = k8sControlNodeConfig.replace(caCert, tlsCaCert.replace("\n", "\n      "));
         String pubKey = "- \"" + configurationDao.getValue("ssh.publickey") + "\"";
         String sshKeyPair = kubernetesCluster.getKeyPair();
-        if (!Strings.isNullOrEmpty(sshKeyPair)) {
+        if (StringUtils.isNotEmpty(sshKeyPair)) {
             SSHKeyPairVO sshkp = sshKeyPairDao.findByName(owner.getAccountId(), owner.getDomainId(), sshKeyPair);
             if (sshkp != null) {
                 pubKey += "\n      - \"" + sshkp.getPublicKey() + "\"";
@@ -188,7 +187,7 @@ public class KubernetesClusterStartWorker extends KubernetesClusterResourceModif
         Pair<String, Map<Long, Network.IpAddresses>> ipAddresses = getKubernetesControlNodeIpAddresses(zone, network, owner);
         String controlNodeIp = ipAddresses.first();
         Map<Long, Network.IpAddresses> requestedIps = ipAddresses.second();
-        if (Network.GuestType.Shared.equals(network.getGuestType()) && Strings.isNullOrEmpty(serverIp)) {
+        if (Network.GuestType.Shared.equals(network.getGuestType()) && StringUtils.isEmpty(serverIp)) {
             serverIp = controlNodeIp;
         }
         Network.IpAddresses addrs = new Network.IpAddresses(controlNodeIp, null);
@@ -206,7 +205,7 @@ public class KubernetesClusterStartWorker extends KubernetesClusterResourceModif
         } catch (IOException e) {
             logAndThrow(Level.ERROR, "Failed to read Kubernetes control node configuration file", e);
         }
-        String base64UserData = Base64.encodeBase64String(k8sControlNodeConfig.getBytes(StringUtils.getPreferredCharset()));
+        String base64UserData = Base64.encodeBase64String(k8sControlNodeConfig.getBytes(com.cloud.utils.StringUtils.getPreferredCharset()));
         controlVm = userVmService.createAdvancedVirtualMachine(zone, serviceOffering, clusterTemplate, networkIds, owner,
                 hostName, hostName, null, null, null,
                 Hypervisor.HypervisorType.None, BaseCmd.HTTPMethod.POST, base64UserData, kubernetesCluster.getKeyPair(),
@@ -226,7 +225,7 @@ public class KubernetesClusterStartWorker extends KubernetesClusterResourceModif
         final String ejectIsoKey = "{{ k8s.eject.iso }}";
         String pubKey = "- \"" + configurationDao.getValue("ssh.publickey") + "\"";
         String sshKeyPair = kubernetesCluster.getKeyPair();
-        if (!Strings.isNullOrEmpty(sshKeyPair)) {
+        if (StringUtils.isNotEmpty(sshKeyPair)) {
             SSHKeyPairVO sshkp = sshKeyPairDao.findByName(owner.getAccountId(), owner.getDomainId(), sshKeyPair);
             if (sshkp != null) {
                 pubKey += "\n      - \"" + sshkp.getPublicKey() + "\"";
@@ -261,7 +260,7 @@ public class KubernetesClusterStartWorker extends KubernetesClusterResourceModif
         } catch (IOException e) {
             logAndThrow(Level.ERROR, "Failed to read Kubernetes control configuration file", e);
         }
-        String base64UserData = Base64.encodeBase64String(k8sControlNodeConfig.getBytes(StringUtils.getPreferredCharset()));
+        String base64UserData = Base64.encodeBase64String(k8sControlNodeConfig.getBytes(com.cloud.utils.StringUtils.getPreferredCharset()));
         additionalControlVm = userVmService.createAdvancedVirtualMachine(zone, serviceOffering, clusterTemplate, networkIds, owner,
                 hostName, hostName, null, null, null,
                 Hypervisor.HypervisorType.None, BaseCmd.HTTPMethod.POST, base64UserData, kubernetesCluster.getKeyPair(),
@@ -449,20 +448,20 @@ public class KubernetesClusterStartWorker extends KubernetesClusterResourceModif
     }
 
     private boolean isKubernetesClusterKubeConfigAvailable(final long timeoutTime) {
-        if (Strings.isNullOrEmpty(publicIpAddress)) {
+        if (StringUtils.isEmpty(publicIpAddress)) {
             KubernetesClusterDetailsVO kubeConfigDetail = kubernetesClusterDetailsDao.findDetail(kubernetesCluster.getId(), "kubeConfigData");
-            if (kubeConfigDetail != null && !Strings.isNullOrEmpty(kubeConfigDetail.getValue())) {
+            if (kubeConfigDetail != null && StringUtils.isNotEmpty(kubeConfigDetail.getValue())) {
                 return true;
             }
         }
         String kubeConfig = KubernetesClusterUtil.getKubernetesClusterConfig(kubernetesCluster, publicIpAddress, sshPort, CLUSTER_NODE_VM_USER, sshKeyFile, timeoutTime);
-        if (!Strings.isNullOrEmpty(kubeConfig)) {
+        if (StringUtils.isNotEmpty(kubeConfig)) {
             final String controlVMPrivateIpAddress = getControlVmPrivateIp();
-            if (!Strings.isNullOrEmpty(controlVMPrivateIpAddress)) {
+            if (StringUtils.isNotEmpty(controlVMPrivateIpAddress)) {
                 kubeConfig = kubeConfig.replace(String.format("server: https://%s:%d", controlVMPrivateIpAddress, CLUSTER_API_PORT),
                         String.format("server: https://%s:%d", publicIpAddress, CLUSTER_API_PORT));
             }
-            kubernetesClusterDetailsDao.addDetail(kubernetesCluster.getId(), "kubeConfigData", Base64.encodeBase64String(kubeConfig.getBytes(StringUtils.getPreferredCharset())), false);
+            kubernetesClusterDetailsDao.addDetail(kubernetesCluster.getId(), "kubeConfigData", Base64.encodeBase64String(kubeConfig.getBytes(com.cloud.utils.StringUtils.getPreferredCharset())), false);
             return true;
         }
         return false;
@@ -509,7 +508,7 @@ public class KubernetesClusterStartWorker extends KubernetesClusterResourceModif
         }
         Pair<String, Integer> publicIpSshPort = getKubernetesClusterServerIpSshPort(null);
         publicIpAddress = publicIpSshPort.first();
-        if (Strings.isNullOrEmpty(publicIpAddress) &&
+        if (StringUtils.isEmpty(publicIpAddress) &&
                 (Network.GuestType.Isolated.equals(network.getGuestType()) || kubernetesCluster.getControlNodeCount() > 1)) { // Shared network, single-control node cluster won't have an IP yet
             logTransitStateAndThrow(Level.ERROR, String.format("Failed to start Kubernetes cluster : %s as no public IP found for the cluster" , kubernetesCluster.getName()), kubernetesCluster.getId(), KubernetesCluster.Event.CreateFailed);
         }
@@ -525,10 +524,10 @@ public class KubernetesClusterStartWorker extends KubernetesClusterResourceModif
             logTransitStateAndThrow(Level.ERROR, String.format("Provisioning the control VM failed in the Kubernetes cluster : %s", kubernetesCluster.getName()), kubernetesCluster.getId(), KubernetesCluster.Event.CreateFailed, e);
         }
         clusterVMs.add(k8sControlVM);
-        if (Strings.isNullOrEmpty(publicIpAddress)) {
+        if (StringUtils.isEmpty(publicIpAddress)) {
             publicIpSshPort = getKubernetesClusterServerIpSshPort(k8sControlVM);
             publicIpAddress = publicIpSshPort.first();
-            if (Strings.isNullOrEmpty(publicIpAddress)) {
+            if (StringUtils.isEmpty(publicIpAddress)) {
                 logTransitStateAndThrow(Level.WARN, String.format("Failed to start Kubernetes cluster : %s as no public IP found for the cluster", kubernetesCluster.getName()), kubernetesCluster.getId(), KubernetesCluster.Event.CreateFailed);
             }
         }
@@ -604,7 +603,7 @@ public class KubernetesClusterStartWorker extends KubernetesClusterResourceModif
         Pair<String, Integer> sshIpPort =  getKubernetesClusterServerIpSshPort(null);
         publicIpAddress = sshIpPort.first();
         sshPort = sshIpPort.second();
-        if (Strings.isNullOrEmpty(publicIpAddress)) {
+        if (StringUtils.isEmpty(publicIpAddress)) {
             logTransitStateAndThrow(Level.ERROR, String.format("Failed to start Kubernetes cluster : %s as no public IP found for the cluster" , kubernetesCluster.getName()), kubernetesCluster.getId(), KubernetesCluster.Event.OperationFailed);
         }
         if (!KubernetesClusterUtil.isKubernetesClusterServerRunning(kubernetesCluster, publicIpAddress, CLUSTER_API_PORT, startTimeoutTime, 15000)) {
@@ -633,7 +632,7 @@ public class KubernetesClusterStartWorker extends KubernetesClusterResourceModif
         Pair<String, Integer> sshIpPort =  getKubernetesClusterServerIpSshPort(null);
         publicIpAddress = sshIpPort.first();
         sshPort = sshIpPort.second();
-        if (Strings.isNullOrEmpty(publicIpAddress)) {
+        if (StringUtils.isEmpty(publicIpAddress)) {
             return false;
         }
         long actualNodeCount = 0;
@@ -645,7 +644,7 @@ public class KubernetesClusterStartWorker extends KubernetesClusterResourceModif
         if (kubernetesCluster.getTotalNodeCount() != actualNodeCount) {
             return false;
         }
-        if (Strings.isNullOrEmpty(sshIpPort.first())) {
+        if (StringUtils.isEmpty(sshIpPort.first())) {
             return false;
         }
         if (!KubernetesClusterUtil.isKubernetesClusterServerRunning(kubernetesCluster, sshIpPort.first(),
diff --git a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterUpgradeWorker.java b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterUpgradeWorker.java
index ad289bf..c9ea83e 100644
--- a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterUpgradeWorker.java
+++ b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterUpgradeWorker.java
@@ -36,7 +36,7 @@ import com.cloud.uservm.UserVm;
 import com.cloud.utils.Pair;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.ssh.SshHelper;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public class KubernetesClusterUpgradeWorker extends KubernetesClusterActionWorker {
 
@@ -81,7 +81,7 @@ public class KubernetesClusterUpgradeWorker extends KubernetesClusterActionWorke
         for (int i = 0; i < clusterVMs.size(); ++i) {
             UserVm vm = clusterVMs.get(i);
             String hostName = vm.getHostName();
-            if (!Strings.isNullOrEmpty(hostName)) {
+            if (StringUtils.isNotEmpty(hostName)) {
                 hostName = hostName.toLowerCase();
             }
             result = null;
@@ -138,7 +138,7 @@ public class KubernetesClusterUpgradeWorker extends KubernetesClusterActionWorke
         Pair<String, Integer> publicIpSshPort = getKubernetesClusterServerIpSshPort(null);
         publicIpAddress = publicIpSshPort.first();
         sshPort = publicIpSshPort.second();
-        if (Strings.isNullOrEmpty(publicIpAddress)) {
+        if (StringUtils.isEmpty(publicIpAddress)) {
             logAndThrow(Level.ERROR, String.format("Upgrade failed for Kubernetes cluster : %s, unable to retrieve associated public IP", kubernetesCluster.getName()));
         }
         clusterVMs = getKubernetesClusterVMs();
diff --git a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/utils/KubernetesClusterUtil.java b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/utils/KubernetesClusterUtil.java
index c16ac42..3ec49b1 100644
--- a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/utils/KubernetesClusterUtil.java
+++ b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/utils/KubernetesClusterUtil.java
@@ -39,7 +39,7 @@ import com.cloud.uservm.UserVm;
 import com.cloud.utils.Pair;
 import com.cloud.utils.nio.TrustAllManager;
 import com.cloud.utils.ssh.SshHelper;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public class KubernetesClusterUtil {
 
@@ -103,7 +103,7 @@ public class KubernetesClusterUtil {
                                                         final UserVm userVm, final long timeoutTime,
                                                         final int waitDuration) {
         String hostName = userVm.getHostName();
-        if (!Strings.isNullOrEmpty(hostName)) {
+        if (StringUtils.isNotEmpty(hostName)) {
             hostName = hostName.toLowerCase();
         }
         while (System.currentTimeMillis() < timeoutTime) {
@@ -134,13 +134,13 @@ public class KubernetesClusterUtil {
                                                                  final String namespace, String serviceName) {
         try {
             String cmd = "sudo /opt/bin/kubectl get pods --all-namespaces";
-            if (!Strings.isNullOrEmpty(namespace)) {
+            if (StringUtils.isNotEmpty(namespace)) {
                 cmd = String.format("sudo /opt/bin/kubectl get pods --namespace=%s", namespace);
             }
             Pair<Boolean, String> result = SshHelper.sshExecute(ipAddress, port, user,
                     sshKeyFile, null, cmd,
                     10000, 10000, 10000);
-            if (result.first() && !Strings.isNullOrEmpty(result.second())) {
+            if (result.first() && StringUtils.isNotEmpty(result.second())) {
                 String[] lines = result.second().split("\n");
                 for (String line :
                         lines) {
@@ -192,7 +192,7 @@ public class KubernetesClusterUtil {
                         sshKeyFile, null, "sudo cat /etc/kubernetes/admin.conf",
                         10000, 10000, 10000);
 
-                if (result.first() && !Strings.isNullOrEmpty(result.second())) {
+                if (result.first() && StringUtils.isNotEmpty(result.second())) {
                     kubeConfig = result.second();
                     break;
                 } else  {
@@ -235,7 +235,7 @@ public class KubernetesClusterUtil {
                 con.setSSLSocketFactory(sslContext.getSocketFactory());
                 BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
                 String versionOutput = br.lines().collect(Collectors.joining());
-                if (!Strings.isNullOrEmpty(versionOutput)) {
+                if (StringUtils.isNotEmpty(versionOutput)) {
                     if (LOGGER.isInfoEnabled()) {
                         LOGGER.info(String.format("Kubernetes cluster : %s API has been successfully provisioned, %s", kubernetesCluster.getName(), versionOutput));
                     }
diff --git a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/version/KubernetesVersionManagerImpl.java b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/version/KubernetesVersionManagerImpl.java
index 9e58cf3..649783e 100644
--- a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/version/KubernetesVersionManagerImpl.java
+++ b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/version/KubernetesVersionManagerImpl.java
@@ -56,7 +56,7 @@ import com.cloud.utils.db.Filter;
 import com.cloud.utils.db.SearchBuilder;
 import com.cloud.utils.db.SearchCriteria;
 import com.cloud.utils.exception.CloudRuntimeException;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public class KubernetesVersionManagerImpl extends ManagerBase implements KubernetesVersionService {
     public static final Logger LOGGER = Logger.getLogger(KubernetesVersionManagerImpl.class.getName());
@@ -130,7 +130,7 @@ public class KubernetesVersionManagerImpl extends ManagerBase implements Kuberne
     }
 
     private List <KubernetesSupportedVersionVO> filterKubernetesSupportedVersions(List <KubernetesSupportedVersionVO> versions, final String minimumSemanticVersion) {
-        if (!Strings.isNullOrEmpty(minimumSemanticVersion)) {
+        if (StringUtils.isNotEmpty(minimumSemanticVersion)) {
             for (int i = versions.size() - 1; i >= 0; --i) {
                 KubernetesSupportedVersionVO version = versions.get(i);
                 try {
@@ -159,7 +159,7 @@ public class KubernetesVersionManagerImpl extends ManagerBase implements Kuberne
         registerIsoCmd.setDisplayText(isoName);
         registerIsoCmd.setBootable(false);
         registerIsoCmd.setUrl(isoUrl);
-        if (!Strings.isNullOrEmpty(isoChecksum)) {
+        if (StringUtils.isNotEmpty(isoChecksum)) {
             registerIsoCmd.setChecksum(isoChecksum);
         }
         registerIsoCmd.setAccountName(accountManager.getSystemAccount().getAccountName());
@@ -176,7 +176,7 @@ public class KubernetesVersionManagerImpl extends ManagerBase implements Kuberne
     }
 
     public static int compareSemanticVersions(String v1, String v2) throws IllegalArgumentException {
-        if (Strings.isNullOrEmpty(v1) || Strings.isNullOrEmpty(v2)) {
+        if (StringUtils.isAnyEmpty(v1, v2)) {
             throw new IllegalArgumentException(String.format("Invalid version comparision with versions %s, %s", v1, v2));
         }
         if(!isSemanticVersion(v1)) {
@@ -240,7 +240,7 @@ public class KubernetesVersionManagerImpl extends ManagerBase implements Kuberne
         final Long zoneId = cmd.getZoneId();
         String minimumSemanticVersion = cmd.getMinimumSemanticVersion();
         final Long minimumKubernetesVersionId = cmd.getMinimumKubernetesVersionId();
-        if (!Strings.isNullOrEmpty(minimumSemanticVersion) && minimumKubernetesVersionId != null) {
+        if (StringUtils.isNotEmpty(minimumSemanticVersion) && minimumKubernetesVersionId != null) {
             throw new CloudRuntimeException(String.format("Both parameters %s and %s can not be passed together", ApiConstants.MIN_SEMANTIC_VERSION, ApiConstants.MIN_KUBERNETES_VERSION_ID));
         }
         if (minimumKubernetesVersionId != null) {
@@ -299,10 +299,10 @@ public class KubernetesVersionManagerImpl extends ManagerBase implements Kuberne
         if (zoneId != null && dataCenterDao.findById(zoneId) == null) {
             throw new InvalidParameterValueException("Invalid zone specified");
         }
-        if (Strings.isNullOrEmpty(isoUrl)) {
+        if (StringUtils.isEmpty(isoUrl)) {
             throw new InvalidParameterValueException(String.format("Invalid URL for ISO specified, %s", isoUrl));
         }
-        if (Strings.isNullOrEmpty(name)) {
+        if (StringUtils.isEmpty(name)) {
             name = String.format("v%s", semanticVersion);
             if (zoneId != null) {
                 name = String.format("%s-%s", name, dataCenterDao.findById(zoneId).getName());
diff --git a/plugins/integrations/kubernetes-service/src/main/java/org/apache/cloudstack/api/command/admin/kubernetes/version/AddKubernetesSupportedVersionCmd.java b/plugins/integrations/kubernetes-service/src/main/java/org/apache/cloudstack/api/command/admin/kubernetes/version/AddKubernetesSupportedVersionCmd.java
index ece9d5a..bd9e389 100644
--- a/plugins/integrations/kubernetes-service/src/main/java/org/apache/cloudstack/api/command/admin/kubernetes/version/AddKubernetesSupportedVersionCmd.java
+++ b/plugins/integrations/kubernetes-service/src/main/java/org/apache/cloudstack/api/command/admin/kubernetes/version/AddKubernetesSupportedVersionCmd.java
@@ -38,7 +38,7 @@ import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.kubernetes.version.KubernetesSupportedVersion;
 import com.cloud.kubernetes.version.KubernetesVersionService;
 import com.cloud.utils.exception.CloudRuntimeException;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 @APICommand(name = AddKubernetesSupportedVersionCmd.APINAME,
         description = "Add a supported Kubernetes version",
@@ -95,7 +95,7 @@ public class AddKubernetesSupportedVersionCmd extends BaseCmd implements AdminCm
     }
 
     public String getSemanticVersion() {
-        if(Strings.isNullOrEmpty(semanticVersion)) {
+        if(StringUtils.isEmpty(semanticVersion)) {
             throw new InvalidParameterValueException("Version can not be null");
         }
         if(!semanticVersion.matches("[0-9]+(\\.[0-9]+)*")) {
diff --git a/plugins/integrations/kubernetes-service/src/main/java/org/apache/cloudstack/api/command/user/kubernetes/version/ListKubernetesSupportedVersionsCmd.java b/plugins/integrations/kubernetes-service/src/main/java/org/apache/cloudstack/api/command/user/kubernetes/version/ListKubernetesSupportedVersionsCmd.java
index 6d2c285..d461182 100644
--- a/plugins/integrations/kubernetes-service/src/main/java/org/apache/cloudstack/api/command/user/kubernetes/version/ListKubernetesSupportedVersionsCmd.java
+++ b/plugins/integrations/kubernetes-service/src/main/java/org/apache/cloudstack/api/command/user/kubernetes/version/ListKubernetesSupportedVersionsCmd.java
@@ -33,7 +33,7 @@ import org.apache.log4j.Logger;
 
 import com.cloud.exception.ConcurrentOperationException;
 import com.cloud.kubernetes.version.KubernetesVersionService;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 @APICommand(name = ListKubernetesSupportedVersionsCmd.APINAME,
         description = "Lists supported Kubernetes version",
@@ -81,7 +81,7 @@ public class ListKubernetesSupportedVersionsCmd extends BaseListCmd {
     }
 
     public String getMinimumSemanticVersion() {
-        if(!Strings.isNullOrEmpty(minimumSemanticVersion) &&
+        if(StringUtils.isNotEmpty(minimumSemanticVersion) &&
                 !minimumSemanticVersion.matches("[0-9]+(\\.[0-9]+)*")) {
             throw new IllegalArgumentException("Invalid version format");
         }
diff --git a/plugins/integrations/prometheus/src/main/java/org/apache/cloudstack/metrics/PrometheusExporterImpl.java b/plugins/integrations/prometheus/src/main/java/org/apache/cloudstack/metrics/PrometheusExporterImpl.java
index d85e07b..8609cd9 100644
--- a/plugins/integrations/prometheus/src/main/java/org/apache/cloudstack/metrics/PrometheusExporterImpl.java
+++ b/plugins/integrations/prometheus/src/main/java/org/apache/cloudstack/metrics/PrometheusExporterImpl.java
@@ -62,7 +62,7 @@ import com.cloud.utils.component.Manager;
 import com.cloud.utils.component.ManagerBase;
 import com.cloud.vm.VirtualMachine.State;
 import com.cloud.vm.dao.VMInstanceDao;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public class PrometheusExporterImpl extends ManagerBase implements PrometheusExporter, Manager {
     private static final Logger LOG = Logger.getLogger(PrometheusExporterImpl.class);
@@ -464,7 +464,7 @@ public class PrometheusExporterImpl extends ManagerBase implements PrometheusExp
 
         @Override
         public String toMetricsString() {
-            if (Strings.isNullOrEmpty(hostName) && Strings.isNullOrEmpty(ip)) {
+            if (StringUtils.isAllEmpty(hostName, ip)) {
                 return String.format("%s{zone=\"%s\",filter=\"%s\"} %d", name, zoneName, filter, core);
             }
             return String.format("%s{zone=\"%s\",hostname=\"%s\",ip=\"%s\",filter=\"%s\",dedicated=\"%d\"} %d", name, zoneName, hostName, ip, filter, isDedicated, core);
@@ -495,7 +495,7 @@ public class PrometheusExporterImpl extends ManagerBase implements PrometheusExp
 
         @Override
         public String toMetricsString() {
-            if (Strings.isNullOrEmpty(hostName) && Strings.isNullOrEmpty(ip)) {
+            if (StringUtils.isAllEmpty(hostName, ip)) {
                 return String.format("%s{zone=\"%s\",filter=\"%s\"} %.2f", name, zoneName, filter, mhertz);
             }
             return String.format("%s{zone=\"%s\",hostname=\"%s\",ip=\"%s\",overprovisioningfactor=\"%s\",filter=\"%s\"} %.2f", name, zoneName, hostName, ip, overProvisioningFactor, filter, mhertz);
@@ -528,7 +528,7 @@ public class PrometheusExporterImpl extends ManagerBase implements PrometheusExp
 
         @Override
         public String toMetricsString() {
-            if (Strings.isNullOrEmpty(hostName) && Strings.isNullOrEmpty(ip)) {
+            if (StringUtils.isAllEmpty(hostName, ip)) {
                 return String.format("%s{zone=\"%s\",filter=\"%s\"} %.2f", name, zoneName, filter, miBytes);
             }
             return String.format("%s{zone=\"%s\",hostname=\"%s\",ip=\"%s\",overprovisioningfactor=\"%s\",filter=\"%s\",dedicated=\"%d\"} %.2f", name, zoneName, hostName, ip, overProvisioningFactor, filter, isDedicated, miBytes);
@@ -583,7 +583,7 @@ public class PrometheusExporterImpl extends ManagerBase implements PrometheusExp
 
         @Override
         public String toMetricsString() {
-            if (Strings.isNullOrEmpty(overProvisioningFactor)) {
+            if (StringUtils.isEmpty(overProvisioningFactor)) {
                 return String.format("%s{zone=\"%s\",name=\"%s\",address=\"%s\",type=\"%s\",filter=\"%s\"} %.2f", name, zoneName, pname, address, type, filter, total);
             }
             return String.format("%s{zone=\"%s\",name=\"%s\",address=\"%s\",type=\"%s\",overprovisioningfactor=\"%s\",filter=\"%s\"} %.2f", name, zoneName, pname, address, type, overProvisioningFactor, filter, total);
diff --git a/plugins/metrics/src/main/java/org/apache/cloudstack/response/VolumeMetricsResponse.java b/plugins/metrics/src/main/java/org/apache/cloudstack/response/VolumeMetricsResponse.java
index 47d7a7c..c67315c 100644
--- a/plugins/metrics/src/main/java/org/apache/cloudstack/response/VolumeMetricsResponse.java
+++ b/plugins/metrics/src/main/java/org/apache/cloudstack/response/VolumeMetricsResponse.java
@@ -21,7 +21,7 @@ import org.apache.cloudstack.api.ApiConstants;
 import org.apache.cloudstack.api.response.VolumeResponse;
 
 import com.cloud.serializer.Param;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import com.google.gson.annotations.SerializedName;
 
 public class VolumeMetricsResponse extends VolumeResponse {
@@ -34,7 +34,7 @@ public class VolumeMetricsResponse extends VolumeResponse {
     private Long diskIopsTotal;
 
     public void setStorageType(final String storageType, final String volumeType) {
-        if (!Strings.isNullOrEmpty(storageType) && !Strings.isNullOrEmpty(volumeType)) {
+        if (StringUtils.isNoneEmpty(storageType, volumeType)) {
             this.setStorageType(String.format("%s (%s)", storageType.substring(0, 1).toUpperCase() + storageType.substring(1), volumeType));
         }
     }
diff --git a/plugins/network-elements/bigswitch/src/main/java/com/cloud/network/bigswitch/BigSwitchBcfApi.java b/plugins/network-elements/bigswitch/src/main/java/com/cloud/network/bigswitch/BigSwitchBcfApi.java
index 86396d9..bdb4502 100644
--- a/plugins/network-elements/bigswitch/src/main/java/com/cloud/network/bigswitch/BigSwitchBcfApi.java
+++ b/plugins/network-elements/bigswitch/src/main/java/com/cloud/network/bigswitch/BigSwitchBcfApi.java
@@ -47,7 +47,7 @@ import org.apache.commons.httpclient.methods.PutMethod;
 import org.apache.commons.httpclient.methods.StringRequestEntity;
 import org.apache.commons.httpclient.protocol.Protocol;
 import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.google.gson.Gson;
diff --git a/plugins/network-elements/bigswitch/src/main/java/com/cloud/network/bigswitch/BigSwitchBcfUtils.java b/plugins/network-elements/bigswitch/src/main/java/com/cloud/network/bigswitch/BigSwitchBcfUtils.java
index 449aa3c..35ca009 100644
--- a/plugins/network-elements/bigswitch/src/main/java/com/cloud/network/bigswitch/BigSwitchBcfUtils.java
+++ b/plugins/network-elements/bigswitch/src/main/java/com/cloud/network/bigswitch/BigSwitchBcfUtils.java
@@ -24,7 +24,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.net.util.SubnetUtils;
 import org.apache.log4j.Logger;
 import org.bouncycastle.util.IPAddress;
diff --git a/plugins/network-elements/bigswitch/src/main/java/com/cloud/network/guru/BigSwitchBcfGuestNetworkGuru.java b/plugins/network-elements/bigswitch/src/main/java/com/cloud/network/guru/BigSwitchBcfGuestNetworkGuru.java
index 29a29a4..45f4a1f 100644
--- a/plugins/network-elements/bigswitch/src/main/java/com/cloud/network/guru/BigSwitchBcfGuestNetworkGuru.java
+++ b/plugins/network-elements/bigswitch/src/main/java/com/cloud/network/guru/BigSwitchBcfGuestNetworkGuru.java
@@ -24,7 +24,7 @@ import java.util.List;
 import javax.inject.Inject;
 
 import org.apache.cloudstack.context.CallContext;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.agent.AgentManager;
diff --git a/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/management/ContrailManagerImpl.java b/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/management/ContrailManagerImpl.java
index 0a1bd10..1ba4dd3 100644
--- a/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/management/ContrailManagerImpl.java
+++ b/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/management/ContrailManagerImpl.java
@@ -48,7 +48,7 @@ import org.apache.cloudstack.network.contrail.model.FloatingIpPoolModel;
 import org.apache.cloudstack.network.contrail.model.ModelController;
 import org.apache.cloudstack.network.contrail.model.VirtualNetworkModel;
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.configuration.ConfigurationManager;
diff --git a/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/management/ServerDBSyncImpl.java b/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/management/ServerDBSyncImpl.java
index b9a3ed3..320ac48 100644
--- a/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/management/ServerDBSyncImpl.java
+++ b/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/management/ServerDBSyncImpl.java
@@ -40,7 +40,7 @@ import net.juniper.contrail.api.types.VirtualMachine;
 import net.juniper.contrail.api.types.VirtualMachineInterface;
 import net.juniper.contrail.api.types.VirtualNetwork;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
diff --git a/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/model/NetworkPolicyModel.java b/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/model/NetworkPolicyModel.java
index fbf791a..1b509dc 100644
--- a/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/model/NetworkPolicyModel.java
+++ b/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/model/NetworkPolicyModel.java
@@ -21,7 +21,7 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.network.Networks;
diff --git a/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/model/ServiceInstanceModel.java b/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/model/ServiceInstanceModel.java
index 7a074a0..d0db7b8 100644
--- a/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/model/ServiceInstanceModel.java
+++ b/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/model/ServiceInstanceModel.java
@@ -31,7 +31,7 @@ import net.juniper.contrail.api.types.ServiceTemplate;
 import net.juniper.contrail.api.types.ServiceTemplateType;
 
 import org.apache.cloudstack.network.contrail.management.ContrailManager;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.offering.ServiceOffering;
diff --git a/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/model/VirtualMachineModel.java b/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/model/VirtualMachineModel.java
index c44fcac..d78dc4d 100644
--- a/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/model/VirtualMachineModel.java
+++ b/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/model/VirtualMachineModel.java
@@ -29,7 +29,7 @@ import net.juniper.contrail.api.types.ServiceInstance;
 import net.juniper.contrail.api.types.VirtualMachine;
 
 import org.apache.cloudstack.network.contrail.management.ContrailManager;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.exception.InternalErrorException;
diff --git a/plugins/network-elements/netscaler/src/main/java/com/cloud/network/resource/NetScalerControlCenterResource.java b/plugins/network-elements/netscaler/src/main/java/com/cloud/network/resource/NetScalerControlCenterResource.java
index e23cb0b..b702495 100644
--- a/plugins/network-elements/netscaler/src/main/java/com/cloud/network/resource/NetScalerControlCenterResource.java
+++ b/plugins/network-elements/netscaler/src/main/java/com/cloud/network/resource/NetScalerControlCenterResource.java
@@ -33,6 +33,7 @@ import java.util.Map;
 import javax.naming.ConfigurationException;
 
 import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
 import org.apache.http.client.ClientProtocolException;
@@ -88,7 +89,6 @@ import com.cloud.network.rules.LbStickinessMethod.StickinessMethodType;
 import com.cloud.resource.ServerResource;
 import com.cloud.serializer.GsonHelper;
 import com.cloud.utils.NumbersUtil;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.exception.ExecutionException;
 import com.cloud.utils.net.NetUtils;
 
@@ -738,7 +738,7 @@ public class NetScalerControlCenterResource implements ServerResource {
             int i = 0;
             if (temp != null) {
                 while (i < temp.length) {
-                    temp[i] = StringUtils.cleanString(temp[i]);
+                    temp[i] = com.cloud.utils.StringUtils.cleanString(temp[i]);
                     i++;
                 }
                 List<String> stringList = new ArrayList<String>();
diff --git a/plugins/outofbandmanagement-drivers/ipmitool/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/ipmitool/IpmitoolOutOfBandManagementDriver.java b/plugins/outofbandmanagement-drivers/ipmitool/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/ipmitool/IpmitoolOutOfBandManagementDriver.java
index 6992ca7..2c42554 100644
--- a/plugins/outofbandmanagement-drivers/ipmitool/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/ipmitool/IpmitoolOutOfBandManagementDriver.java
+++ b/plugins/outofbandmanagement-drivers/ipmitool/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/ipmitool/IpmitoolOutOfBandManagementDriver.java
@@ -19,7 +19,6 @@ package org.apache.cloudstack.outofbandmanagement.driver.ipmitool;
 import com.cloud.utils.component.AdapterBase;
 import com.cloud.utils.concurrency.NamedThreadFactory;
 import com.cloud.utils.exception.CloudRuntimeException;
-import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableMap;
 import org.apache.cloudstack.framework.config.ConfigKey;
 import org.apache.cloudstack.framework.config.Configurable;
@@ -59,7 +58,7 @@ public final class IpmitoolOutOfBandManagementDriver extends AdapterBase impleme
 
     private String getIpmiUserId(ImmutableMap<OutOfBandManagement.Option, String> options, final Duration timeOut) {
         final String username = options.get(OutOfBandManagement.Option.USERNAME);
-        if (Strings.isNullOrEmpty(username)) {
+        if (StringUtils.isEmpty(username)) {
             throw new CloudRuntimeException("Empty IPMI user configured, cannot proceed to find user's ID.");
         }
 
@@ -76,7 +75,7 @@ public final class IpmitoolOutOfBandManagementDriver extends AdapterBase impleme
         }
 
         final String userId = IPMITOOL.findIpmiUser(output.getResult(), username);
-        if (Strings.isNullOrEmpty(userId)) {
+        if (StringUtils.isEmpty(userId)) {
             String message = String.format("No IPMI user ID found for the username [%s].", username);
             LOG.debug(message);
             throw new CloudRuntimeException(message);
diff --git a/plugins/outofbandmanagement-drivers/ipmitool/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/ipmitool/IpmitoolWrapper.java b/plugins/outofbandmanagement-drivers/ipmitool/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/ipmitool/IpmitoolWrapper.java
index f5896b2..22b9ef4 100644
--- a/plugins/outofbandmanagement-drivers/ipmitool/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/ipmitool/IpmitoolWrapper.java
+++ b/plugins/outofbandmanagement-drivers/ipmitool/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/ipmitool/IpmitoolWrapper.java
@@ -17,9 +17,8 @@
 
 package org.apache.cloudstack.outofbandmanagement.driver.ipmitool;
 
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.exception.CloudRuntimeException;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import org.apache.cloudstack.outofbandmanagement.OutOfBandManagement;
@@ -61,7 +60,7 @@ public final class IpmitoolWrapper {
     }
 
     public OutOfBandManagement.PowerState parsePowerState(final String standardOutput) {
-        if (Strings.isNullOrEmpty(standardOutput)) {
+        if (StringUtils.isEmpty(standardOutput)) {
             return OutOfBandManagement.PowerState.Unknown;
         }
         if (standardOutput.equals("Chassis Power is on")) {
diff --git a/plugins/outofbandmanagement-drivers/nested-cloudstack/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/nestedcloudstack/NestedCloudStackOutOfBandManagementDriver.java b/plugins/outofbandmanagement-drivers/nested-cloudstack/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/nestedcloudstack/NestedCloudStackOutOfBandManagementDriver.java
index 37d5c57..fcf2caa 100644
--- a/plugins/outofbandmanagement-drivers/nested-cloudstack/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/nestedcloudstack/NestedCloudStackOutOfBandManagementDriver.java
+++ b/plugins/outofbandmanagement-drivers/nested-cloudstack/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/nestedcloudstack/NestedCloudStackOutOfBandManagementDriver.java
@@ -23,7 +23,7 @@ import br.com.autonomiccs.apacheCloudStack.exceptions.ApacheCloudStackClientRequ
 import com.cloud.utils.component.AdapterBase;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import com.google.common.collect.ImmutableMap;
 import org.apache.cloudstack.outofbandmanagement.OutOfBandManagement;
 import org.apache.cloudstack.outofbandmanagement.OutOfBandManagementDriver;
@@ -53,14 +53,14 @@ public final class NestedCloudStackOutOfBandManagementDriver extends AdapterBase
     }
 
     protected void ensureOptionExists(final ImmutableMap<OutOfBandManagement.Option, String> options, final OutOfBandManagement.Option option) {
-        if (options != null && option != null && options.containsKey(option) && !Strings.isNullOrEmpty(options.get(option))) {
+        if (options != null && option != null && options.containsKey(option) && StringUtils.isNotEmpty(options.get(option))) {
             return;
         }
         throw new CloudRuntimeException("Invalid out-of-band management configuration detected for the nested-cloudstack driver");
     }
 
     protected OutOfBandManagement.PowerState getNestedVMPowerState(final String jsonResponse) {
-        if (Strings.isNullOrEmpty(jsonResponse)) {
+        if (StringUtils.isEmpty(jsonResponse)) {
             return OutOfBandManagement.PowerState.Unknown;
         }
 
diff --git a/plugins/storage/image/default/src/main/java/org/apache/cloudstack/storage/datastore/lifecycle/CloudStackImageStoreLifeCycleImpl.java b/plugins/storage/image/default/src/main/java/org/apache/cloudstack/storage/datastore/lifecycle/CloudStackImageStoreLifeCycleImpl.java
index d40ca23..0e53191 100644
--- a/plugins/storage/image/default/src/main/java/org/apache/cloudstack/storage/datastore/lifecycle/CloudStackImageStoreLifeCycleImpl.java
+++ b/plugins/storage/image/default/src/main/java/org/apache/cloudstack/storage/datastore/lifecycle/CloudStackImageStoreLifeCycleImpl.java
@@ -188,7 +188,7 @@ public class CloudStackImageStoreLifeCycleImpl implements ImageStoreLifeCycle {
                 }
                 List<String> stringList = new ArrayList<String>();
                 Collections.addAll(stringList, temp);
-                cleanLogString = StringUtils.join(stringList, ",");
+                cleanLogString = org.apache.commons.lang3.StringUtils.join(stringList, ",");
             }
         }
         return cleanLogString;
diff --git a/plugins/storage/volume/datera/src/main/java/org/apache/cloudstack/storage/datastore/driver/DateraPrimaryDataStoreDriver.java b/plugins/storage/volume/datera/src/main/java/org/apache/cloudstack/storage/datastore/driver/DateraPrimaryDataStoreDriver.java
index 49559d2..91e73aa 100644
--- a/plugins/storage/volume/datera/src/main/java/org/apache/cloudstack/storage/datastore/driver/DateraPrimaryDataStoreDriver.java
+++ b/plugins/storage/volume/datera/src/main/java/org/apache/cloudstack/storage/datastore/driver/DateraPrimaryDataStoreDriver.java
@@ -46,6 +46,7 @@ import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
 import org.apache.cloudstack.storage.datastore.util.DateraObject;
 import org.apache.cloudstack.storage.datastore.util.DateraUtil;
 import org.apache.cloudstack.storage.to.SnapshotObjectTO;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.agent.api.Answer;
@@ -76,7 +77,6 @@ import com.cloud.storage.dao.VMTemplatePoolDao;
 import com.cloud.storage.dao.VolumeDao;
 import com.cloud.storage.dao.VolumeDetailsDao;
 import com.cloud.utils.Pair;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.db.GlobalLock;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.google.common.base.Preconditions;
@@ -439,7 +439,7 @@ public class DateraPrimaryDataStoreDriver implements PrimaryDataStoreDriver {
 
         String dataObjectTypeString = dataObject.getType().name(); // TEMPLATE, VOLUME, SNAPSHOT
         String dataObjectTypeBrief;
-        dataObjectTypeBrief = org.apache.commons.lang.StringUtils.substring(dataObjectTypeString, 0, 1);
+        dataObjectTypeBrief = StringUtils.substring(dataObjectTypeString, 0, 1);
         name.add(dataObjectTypeBrief); // T, V
 
         switch (dataObject.getType()) {
@@ -468,7 +468,7 @@ public class DateraPrimaryDataStoreDriver implements PrimaryDataStoreDriver {
         }
 
         String appInstanceName = StringUtils.join("-", name.toArray());
-        return org.apache.commons.lang.StringUtils.substring(appInstanceName, 0, DateraUtil.APPINSTANCE_MAX_LENTH);
+        return StringUtils.substring(appInstanceName, 0, DateraUtil.APPINSTANCE_MAX_LENTH);
     }
 
     // Not being used right now as Datera doesn't support min IOPS
diff --git a/plugins/storage/volume/datera/src/main/java/org/apache/cloudstack/storage/datastore/util/DateraObject.java b/plugins/storage/volume/datera/src/main/java/org/apache/cloudstack/storage/datastore/util/DateraObject.java
index 4d56f4b..43dcb78 100644
--- a/plugins/storage/volume/datera/src/main/java/org/apache/cloudstack/storage/datastore/util/DateraObject.java
+++ b/plugins/storage/volume/datera/src/main/java/org/apache/cloudstack/storage/datastore/util/DateraObject.java
@@ -17,13 +17,14 @@
 
 package org.apache.cloudstack.storage.datastore.util;
 
-import com.cloud.utils.StringUtils;
 import com.google.gson.annotations.SerializedName;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.commons.lang3.StringUtils;
+
 public class DateraObject {
 
     public static final String DEFAULT_CREATE_MODE = "cloudstack";
diff --git a/plugins/storage/volume/datera/src/main/java/org/apache/cloudstack/storage/datastore/util/DateraUtil.java b/plugins/storage/volume/datera/src/main/java/org/apache/cloudstack/storage/datastore/util/DateraUtil.java
index 01ff893..e6d1e1c 100644
--- a/plugins/storage/volume/datera/src/main/java/org/apache/cloudstack/storage/datastore/util/DateraUtil.java
+++ b/plugins/storage/volume/datera/src/main/java/org/apache/cloudstack/storage/datastore/util/DateraUtil.java
@@ -19,7 +19,6 @@ package org.apache.cloudstack.storage.datastore.util;
 
 import com.cloud.host.Host;
 import com.cloud.host.HostVO;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.google.common.base.Preconditions;
 import com.google.gson.Gson;
@@ -27,6 +26,7 @@ import com.google.gson.GsonBuilder;
 import com.google.gson.reflect.TypeToken;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailVO;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpHost;
 import org.apache.http.HttpRequest;
diff --git a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/api/StoragePoolStatistics.java b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/api/StoragePoolStatistics.java
index 599aa5c..4f3f119 100644
--- a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/api/StoragePoolStatistics.java
+++ b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/api/StoragePoolStatistics.java
@@ -17,7 +17,7 @@
 
 package org.apache.cloudstack.storage.datastore.api;
 
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public class StoragePoolStatistics {
     String maxCapacityInKb; // total capacity
@@ -26,7 +26,7 @@ public class StoragePoolStatistics {
     String netUnusedCapacityInKb; // capacity available for volume creation (volume space to write)
 
     public Long getMaxCapacityInKb() {
-        if (Strings.isNullOrEmpty(maxCapacityInKb)) {
+        if (StringUtils.isEmpty(maxCapacityInKb)) {
             return Long.valueOf(0);
         }
         return Long.valueOf(maxCapacityInKb);
@@ -37,7 +37,7 @@ public class StoragePoolStatistics {
     }
 
     public Long getSpareCapacityInKb() {
-        if (Strings.isNullOrEmpty(spareCapacityInKb)) {
+        if (StringUtils.isEmpty(spareCapacityInKb)) {
             return Long.valueOf(0);
         }
         return Long.valueOf(spareCapacityInKb);
@@ -48,7 +48,7 @@ public class StoragePoolStatistics {
     }
 
     public Long getNetCapacityInUseInKb() {
-        if (Strings.isNullOrEmpty(netCapacityInUseInKb)) {
+        if (StringUtils.isEmpty(netCapacityInUseInKb)) {
             return Long.valueOf(0);
         }
         return Long.valueOf(netCapacityInUseInKb);
@@ -59,7 +59,7 @@ public class StoragePoolStatistics {
     }
 
     public Long getNetUnusedCapacityInKb() {
-        if (Strings.isNullOrEmpty(netUnusedCapacityInKb)) {
+        if (StringUtils.isEmpty(netUnusedCapacityInKb)) {
             return Long.valueOf(0);
         }
         return Long.valueOf(netUnusedCapacityInKb);
diff --git a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/client/ScaleIOGatewayClientImpl.java b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/client/ScaleIOGatewayClientImpl.java
index fa19541..9a8225b 100644
--- a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/client/ScaleIOGatewayClientImpl.java
+++ b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/client/ScaleIOGatewayClientImpl.java
@@ -34,6 +34,7 @@ import java.util.Map;
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.X509TrustManager;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.cloudstack.api.ApiErrorCode;
 import org.apache.cloudstack.api.ServerApiException;
 import org.apache.cloudstack.storage.datastore.api.ProtectionDomain;
@@ -78,7 +79,6 @@ import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.json.JsonMapper;
 import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
 
 public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
     private static final Logger LOG = Logger.getLogger(ScaleIOGatewayClientImpl.class);
@@ -107,8 +107,8 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
     public ScaleIOGatewayClientImpl(final String url, final String username, final String password,
                                     final boolean validateCertificate, final int timeout, final int maxConnections)
             throws NoSuchAlgorithmException, KeyManagementException, URISyntaxException {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(url), "Gateway client url cannot be null");
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(username) && !Strings.isNullOrEmpty(password), "Gateway client credentials cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(url), "Gateway client url cannot be null");
+        Preconditions.checkArgument(StringUtils.isNoneEmpty(username, password), "Gateway client credentials cannot be null");
 
         final RequestConfig config = RequestConfig.custom()
                 .setConnectTimeout(timeout * 1000)
@@ -169,7 +169,7 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
             }
 
             String sessionKeyInResponse = EntityUtils.toString(response.getEntity());
-            if (Strings.isNullOrEmpty(sessionKeyInResponse)) {
+            if (StringUtils.isEmpty(sessionKeyInResponse)) {
                 throw new CloudRuntimeException("Failed to create a valid session for PowerFlex Gateway " + apiURI.getHost() + " to perform API requests");
             }
 
@@ -379,8 +379,8 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
     @Override
     public Volume createVolume(final String name, final String storagePoolId,
                                final Integer sizeInGb, final Storage.ProvisioningType volumeType) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(name), "Volume name cannot be null");
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(storagePoolId), "Storage pool id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(name), "Volume name cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(storagePoolId), "Storage pool id cannot be null");
         Preconditions.checkArgument(sizeInGb != null && sizeInGb > 0, "Size(GB) must be greater than 0");
 
         Volume newVolume = new Volume();
@@ -422,18 +422,18 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     @Override
     public Volume getVolume(String volumeId) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(volumeId), "Volume id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(volumeId), "Volume id cannot be null");
         return get("/instances/Volume::" + volumeId, Volume.class);
     }
 
     @Override
     public Volume getVolumeByName(String name) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(name), "Volume name cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(name), "Volume name cannot be null");
 
         Volume searchVolume = new Volume();
         searchVolume.setName(name);
         String volumeId = post("/types/Volume/instances/action/queryIdByKey", searchVolume, String.class);
-        if (!Strings.isNullOrEmpty(volumeId)) {
+        if (StringUtils.isNotEmpty(volumeId)) {
             return getVolume(volumeId.replace("\"", ""));
         }
         return null;
@@ -441,8 +441,8 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     @Override
     public boolean renameVolume(final String volumeId, final String newName) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(volumeId), "Volume id cannot be null");
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(newName), "New name for volume cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(volumeId), "Volume id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(newName), "New name for volume cannot be null");
 
         Boolean renameVolumeStatus = post(
                 "/instances/Volume::" + volumeId + "/action/setVolumeName",
@@ -455,7 +455,7 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     @Override
     public Volume resizeVolume(final String volumeId, final Integer sizeInGB) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(volumeId), "Volume id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(volumeId), "Volume id cannot be null");
         Preconditions.checkArgument(sizeInGB != null && (sizeInGB > 0 && sizeInGB % 8 == 0),
                 "Size(GB) must be greater than 0 and in granularity of 8");
 
@@ -471,8 +471,8 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     @Override
     public Volume cloneVolume(final String sourceVolumeId, final String destVolumeName) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(sourceVolumeId), "Source volume id cannot be null");
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(destVolumeName), "Dest volume name cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(sourceVolumeId), "Source volume id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(destVolumeName), "Dest volume name cannot be null");
 
         Map<String, String> snapshotMap = new HashMap<>();
         snapshotMap.put(sourceVolumeId, destVolumeName);
@@ -489,7 +489,7 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
             final SnapshotDef snapshotDef = new SnapshotDef();
             snapshotDef.setVolumeId(volumeId);
             String snapshotName = srcVolumeDestSnapshotMap.get(volumeId);
-            if (!Strings.isNullOrEmpty(snapshotName)) {
+            if (StringUtils.isNotEmpty(snapshotName)) {
                 snapshotDef.setSnapshotName(srcVolumeDestSnapshotMap.get(volumeId));
             }
             defs.add(snapshotDef);
@@ -501,7 +501,7 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     @Override
     public boolean revertSnapshot(final String systemId, final Map<String, String> srcSnapshotDestVolumeMap) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(systemId), "System id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(systemId), "System id cannot be null");
         Preconditions.checkArgument(srcSnapshotDestVolumeMap != null && !srcSnapshotDestVolumeMap.isEmpty(), "srcSnapshotDestVolumeMap cannot be null");
 
         //  Take group snapshot (needs additional storage pool capacity till revert operation) to keep the last state of all volumes ???
@@ -555,8 +555,8 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     @Override
     public int deleteSnapshotGroup(final String systemId, final String snapshotGroupId) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(systemId), "System id cannot be null");
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(snapshotGroupId), "Snapshot group id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(systemId), "System id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(snapshotGroupId), "Snapshot group id cannot be null");
 
         JsonNode node = post(
                 "/instances/System::" + systemId + "/action/removeConsistencyGroupSnapshots",
@@ -570,8 +570,8 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     @Override
     public Volume takeSnapshot(final String volumeId, final String snapshotVolumeName) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(volumeId), "Volume id cannot be null");
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(snapshotVolumeName), "Snapshot name cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(volumeId), "Volume id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(snapshotVolumeName), "Snapshot name cannot be null");
 
         final SnapshotDef[] snapshotDef = new SnapshotDef[1];
         snapshotDef[0] = new SnapshotDef();
@@ -592,8 +592,8 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     @Override
     public boolean revertSnapshot(final String sourceSnapshotVolumeId, final String destVolumeId) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(sourceSnapshotVolumeId), "Source snapshot volume id cannot be null");
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(destVolumeId), "Destination volume id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(sourceSnapshotVolumeId), "Source snapshot volume id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(destVolumeId), "Destination volume id cannot be null");
 
         Volume sourceSnapshotVolume = getVolume(sourceSnapshotVolumeId);
         if (sourceSnapshotVolume == null) {
@@ -620,8 +620,8 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     @Override
     public boolean mapVolumeToSdc(final String volumeId, final String sdcId) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(volumeId), "Volume id cannot be null");
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(sdcId), "Sdc Id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(volumeId), "Volume id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(sdcId), "Sdc Id cannot be null");
 
         if (isVolumeMappedToSdc(volumeId, sdcId)) {
             return true;
@@ -638,8 +638,8 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     @Override
     public boolean mapVolumeToSdcWithLimits(final String volumeId, final String sdcId, final Long iopsLimit, final Long bandwidthLimitInKbps) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(volumeId), "Volume id cannot be null");
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(sdcId), "Sdc Id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(volumeId), "Volume id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(sdcId), "Sdc Id cannot be null");
         Preconditions.checkArgument(iopsLimit != null && (iopsLimit == 0 || iopsLimit > 10),
                 "IOPS limit must be 0 (unlimited) or greater than 10");
         Preconditions.checkArgument(bandwidthLimitInKbps != null && (bandwidthLimitInKbps == 0 || (bandwidthLimitInKbps > 0 && bandwidthLimitInKbps % 1024 == 0)),
@@ -668,8 +668,8 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     @Override
     public boolean unmapVolumeFromSdc(final String volumeId, final String sdcId) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(volumeId), "Volume id cannot be null");
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(sdcId), "Sdc Id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(volumeId), "Volume id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(sdcId), "Sdc Id cannot be null");
 
         if (isVolumeMappedToSdc(volumeId, sdcId)) {
             Boolean unmapVolumeFromSdcStatus = post(
@@ -684,7 +684,7 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     @Override
     public boolean unmapVolumeFromAllSdcs(final String volumeId) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(volumeId), "Volume id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(volumeId), "Volume id cannot be null");
 
         Volume volume = getVolume(volumeId);
         if (volume == null) {
@@ -707,10 +707,10 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     @Override
     public boolean isVolumeMappedToSdc(final String volumeId, final String sdcId) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(volumeId), "Volume id cannot be null");
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(sdcId), "Sdc Id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(volumeId), "Volume id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(sdcId), "Sdc Id cannot be null");
 
-        if (Strings.isNullOrEmpty(volumeId) || Strings.isNullOrEmpty(sdcId)) {
+        if (StringUtils.isAnyEmpty(volumeId, sdcId)) {
             return false;
         }
 
@@ -733,7 +733,7 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     @Override
     public boolean deleteVolume(final String volumeId) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(volumeId), "Volume id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(volumeId), "Volume id cannot be null");
 
         try {
             unmapVolumeFromAllSdcs(volumeId);
@@ -749,13 +749,13 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     @Override
     public boolean migrateVolume(final String srcVolumeId, final String destPoolId, final int timeoutInSecs) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(srcVolumeId), "src volume id cannot be null");
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(destPoolId), "dest pool id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(srcVolumeId), "src volume id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(destPoolId), "dest pool id cannot be null");
         Preconditions.checkArgument(timeoutInSecs > 0, "timeout must be greater than 0");
 
         try {
             Volume volume = getVolume(srcVolumeId);
-            if (volume == null || Strings.isNullOrEmpty(volume.getVtreeId())) {
+            if (volume == null || StringUtils.isEmpty(volume.getVtreeId())) {
                 LOG.warn("Couldn't find the volume(-tree), can not migrate the volume " + srcVolumeId);
                 return false;
             }
@@ -819,7 +819,7 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     private boolean waitForVolumeMigrationToComplete(final String volumeTreeId, int waitTimeoutInSecs) {
         LOG.debug("Waiting for the migration to complete for the volume-tree " + volumeTreeId);
-        if (Strings.isNullOrEmpty(volumeTreeId)) {
+        if (StringUtils.isEmpty(volumeTreeId)) {
             LOG.warn("Invalid volume-tree id, unable to check the migration status of the volume-tree " + volumeTreeId);
             return false;
         }
@@ -848,7 +848,7 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
     }
 
     private VTreeMigrationInfo.MigrationStatus getVolumeTreeMigrationStatus(final String volumeTreeId) {
-        if (Strings.isNullOrEmpty(volumeTreeId)) {
+        if (StringUtils.isEmpty(volumeTreeId)) {
             LOG.warn("Invalid volume-tree id, unable to get the migration status of the volume-tree " + volumeTreeId);
             return null;
         }
@@ -861,7 +861,7 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
     }
 
     private boolean rollbackVolumeMigration(final String srcVolumeId) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(srcVolumeId), "src volume id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(srcVolumeId), "src volume id cannot be null");
 
         Volume volume = getVolume(srcVolumeId);
         if (volume == null) {
@@ -911,7 +911,7 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
     }
 
     private boolean pauseVolumeMigration(final String volumeId, final boolean forced) {
-        if (Strings.isNullOrEmpty(volumeId)) {
+        if (StringUtils.isEmpty(volumeId)) {
             LOG.warn("Invalid Volume Id, Unable to pause migration of the volume " + volumeId);
             return false;
         }
@@ -943,24 +943,24 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     @Override
     public StoragePool getStoragePool(String poolId) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(poolId), "Storage pool id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(poolId), "Storage pool id cannot be null");
         return get("/instances/StoragePool::" + poolId, StoragePool.class);
     }
 
     @Override
     public StoragePoolStatistics getStoragePoolStatistics(String poolId) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(poolId), "Storage pool id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(poolId), "Storage pool id cannot be null");
         return get("/instances/StoragePool::" + poolId + "/relationships/Statistics", StoragePoolStatistics.class);
     }
 
     @Override
     public VolumeStatistics getVolumeStatistics(String volumeId) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(volumeId), "Volume id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(volumeId), "Volume id cannot be null");
 
         Volume volume = getVolume(volumeId);
         if (volume != null) {
             String volumeTreeId = volume.getVtreeId();
-            if (!Strings.isNullOrEmpty(volumeTreeId)) {
+            if (StringUtils.isNotEmpty(volumeTreeId)) {
                 VolumeStatistics volumeStatistics = get("/instances/VTree::" + volumeTreeId + "/relationships/Statistics", VolumeStatistics.class);
                 if (volumeStatistics != null) {
                     volumeStatistics.setAllocatedSizeInKb(volume.getSizeInKb());
@@ -974,7 +974,7 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     @Override
     public String getSystemId(String protectionDomainId) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(protectionDomainId), "Protection domain id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(protectionDomainId), "Protection domain id cannot be null");
 
         ProtectionDomain protectionDomain = get("/instances/ProtectionDomain::" + protectionDomainId, ProtectionDomain.class);
         if (protectionDomain != null) {
@@ -985,7 +985,7 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     @Override
     public List<Volume> listVolumesInStoragePool(String poolId) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(poolId), "Storage pool id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(poolId), "Storage pool id cannot be null");
 
         Volume[] volumes = get("/instances/StoragePool::" + poolId + "/relationships/Volume", Volume[].class);
         if (volumes != null) {
@@ -1009,16 +1009,16 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     @Override
     public Sdc getSdc(String sdcId) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(sdcId), "Sdc id cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(sdcId), "Sdc id cannot be null");
         return get("/instances/Sdc::" + sdcId, Sdc.class);
     }
 
     @Override
     public Sdc getSdcByIp(String ipAddress) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(ipAddress), "IP address cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(ipAddress), "IP address cannot be null");
 
         String sdcId = post("/types/Sdc/instances/action/queryIdByKey", String.format("{\"ip\":\"%s\"}", ipAddress), String.class);
-        if (!Strings.isNullOrEmpty(sdcId)) {
+        if (StringUtils.isNotEmpty(sdcId)) {
             return getSdc(sdcId.replace("\"", ""));
         }
         return null;
@@ -1051,7 +1051,7 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
 
     @Override
     public boolean isSdcConnected(String ipAddress) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(ipAddress), "IP address cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(ipAddress), "IP address cannot be null");
 
         List<Sdc> sdcs = listSdcs();
         if(sdcs != null) {
diff --git a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java
index f840bae..1ab9129 100644
--- a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java
+++ b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java
@@ -55,6 +55,7 @@ import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
 import org.apache.cloudstack.storage.datastore.util.ScaleIOUtil;
 import org.apache.cloudstack.storage.to.SnapshotObjectTO;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.agent.api.Answer;
@@ -84,7 +85,6 @@ import com.cloud.utils.Pair;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.vm.VirtualMachineManager;
 import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
 
 public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver {
     private static final Logger LOGGER = Logger.getLogger(ScaleIOPrimaryDataStoreDriver.class);
@@ -768,7 +768,7 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver {
             destPoolSystemId = destPoolSystemIdDetail.getValue();
         }
 
-        if (Strings.isNullOrEmpty(srcPoolSystemId) || Strings.isNullOrEmpty(destPoolSystemId)) {
+        if (StringUtils.isAnyEmpty(srcPoolSystemId, destPoolSystemId)) {
             throw new CloudRuntimeException("Failed to validate PowerFlex pools compatibility for migration as storage instance details are not available");
         }
 
@@ -904,7 +904,7 @@ public class ScaleIOPrimaryDataStoreDriver implements PrimaryDataStoreDriver {
     @Override
     public Pair<Long, Long> getVolumeStats(StoragePool storagePool, String volumePath) {
         Preconditions.checkArgument(storagePool != null, "storagePool cannot be null");
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(volumePath), "volumePath cannot be null");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(volumePath), "volumePath cannot be null");
 
         try {
             final ScaleIOGatewayClient client = getScaleIOClient(storagePool.getId());
diff --git a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/util/ScaleIOUtil.java b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/util/ScaleIOUtil.java
index 0180f17..73a37ce 100644
--- a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/util/ScaleIOUtil.java
+++ b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/util/ScaleIOUtil.java
@@ -20,7 +20,7 @@ package org.apache.cloudstack.storage.datastore.util;
 import org.apache.log4j.Logger;
 
 import com.cloud.utils.script.Script;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public class ScaleIOUtil {
     private static final Logger LOGGER = Logger.getLogger(ScaleIOUtil.class);
@@ -98,7 +98,7 @@ public class ScaleIOUtil {
     }
 
     public static final String getVolumePath(String volumePathWithName) {
-        if (Strings.isNullOrEmpty(volumePathWithName)) {
+        if (StringUtils.isEmpty(volumePathWithName)) {
             return volumePathWithName;
         }
 
@@ -110,7 +110,7 @@ public class ScaleIOUtil {
     }
 
     public static final String updatedPathWithVolumeName(String volumePath, String volumeName) {
-        if (Strings.isNullOrEmpty(volumePath) || Strings.isNullOrEmpty(volumeName)) {
+        if (StringUtils.isAnyEmpty(volumePath, volumeName)) {
             return volumePath;
         }
 
diff --git a/plugins/storage/volume/solidfire/src/main/java/org/apache/cloudstack/storage/datastore/driver/SolidFirePrimaryDataStoreDriver.java b/plugins/storage/volume/solidfire/src/main/java/org/apache/cloudstack/storage/datastore/driver/SolidFirePrimaryDataStoreDriver.java
index f73a8fd..6bad1ef 100644
--- a/plugins/storage/volume/solidfire/src/main/java/org/apache/cloudstack/storage/datastore/driver/SolidFirePrimaryDataStoreDriver.java
+++ b/plugins/storage/volume/solidfire/src/main/java/org/apache/cloudstack/storage/datastore/driver/SolidFirePrimaryDataStoreDriver.java
@@ -48,7 +48,7 @@ import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
 import org.apache.cloudstack.storage.datastore.util.SolidFireUtil;
 import org.apache.cloudstack.storage.to.SnapshotObjectTO;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.agent.api.Answer;
diff --git a/plugins/storage/volume/solidfire/src/main/java/org/apache/cloudstack/storage/datastore/util/SolidFireUtil.java b/plugins/storage/volume/solidfire/src/main/java/org/apache/cloudstack/storage/datastore/util/SolidFireUtil.java
index acf1d5c..47f2f88 100644
--- a/plugins/storage/volume/solidfire/src/main/java/org/apache/cloudstack/storage/datastore/util/SolidFireUtil.java
+++ b/plugins/storage/volume/solidfire/src/main/java/org/apache/cloudstack/storage/datastore/util/SolidFireUtil.java
@@ -27,7 +27,7 @@ import java.util.StringTokenizer;
 import java.util.UUID;
 
 import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
diff --git a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/api/command/LdapImportUsersCmd.java b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/api/command/LdapImportUsersCmd.java
index 9011452..b8b401e 100644
--- a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/api/command/LdapImportUsersCmd.java
+++ b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/api/command/LdapImportUsersCmd.java
@@ -41,7 +41,7 @@ import org.apache.cloudstack.api.response.RoleResponse;
 import org.apache.cloudstack.ldap.LdapManager;
 import org.apache.cloudstack.ldap.LdapUser;
 import org.apache.cloudstack.ldap.NoLdapUserMatchingQueryException;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.bouncycastle.util.encoders.Base64;
 
diff --git a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/ADLdapUserManagerImpl.java b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/ADLdapUserManagerImpl.java
index a8f14df..2413d71 100644
--- a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/ADLdapUserManagerImpl.java
+++ b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/ADLdapUserManagerImpl.java
@@ -27,7 +27,7 @@ import javax.naming.directory.SearchControls;
 import javax.naming.directory.SearchResult;
 import javax.naming.ldap.LdapContext;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 public class ADLdapUserManagerImpl extends OpenLdapUserManagerImpl implements LdapUserManager {
diff --git a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapAuthenticator.java b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapAuthenticator.java
index 2cd035e..3d49d3e 100644
--- a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapAuthenticator.java
+++ b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapAuthenticator.java
@@ -24,7 +24,7 @@ import java.util.UUID;
 import javax.inject.Inject;
 
 import org.apache.cloudstack.acl.RoleType;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.server.auth.UserAuthenticator;
@@ -66,7 +66,7 @@ public class LdapAuthenticator extends AdapterBase implements UserAuthenticator
         }
 
         // TODO not allowing an empty password is a policy we shouldn't decide on. A private cloud may well want to allow this.
-        if (!StringUtils.isEmpty(username) && !StringUtils.isEmpty(password)) {
+        if (StringUtils.isNoneEmpty(username, password)) {
             if (_ldapManager.isLdapEnabled(domainId) || _ldapManager.isLdapEnabled()) {
                 if (LOGGER.isTraceEnabled()) {
                     LOGGER.trace("LDAP is enabled in the ldapManager");
diff --git a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/OpenLdapUserManagerImpl.java b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/OpenLdapUserManagerImpl.java
index 5fe27e5..a3e82af 100644
--- a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/OpenLdapUserManagerImpl.java
+++ b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/OpenLdapUserManagerImpl.java
@@ -35,7 +35,7 @@ import javax.naming.ldap.PagedResultsResponseControl;
 
 import org.apache.cloudstack.ldap.dao.LdapTrustMapDao;
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 public class OpenLdapUserManagerImpl implements LdapUserManager {
diff --git a/plugins/user-authenticators/md5/src/main/java/com/cloud/server/auth/MD5UserAuthenticator.java b/plugins/user-authenticators/md5/src/main/java/com/cloud/server/auth/MD5UserAuthenticator.java
index 37b441d..8398c6c 100644
--- a/plugins/user-authenticators/md5/src/main/java/com/cloud/server/auth/MD5UserAuthenticator.java
+++ b/plugins/user-authenticators/md5/src/main/java/com/cloud/server/auth/MD5UserAuthenticator.java
@@ -22,7 +22,7 @@ import java.util.Map;
 
 import javax.inject.Inject;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.user.UserAccount;
@@ -48,7 +48,7 @@ public class MD5UserAuthenticator extends AdapterBase implements UserAuthenticat
             s_logger.debug("Retrieving user: " + username);
         }
 
-        if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {
+        if (StringUtils.isAnyEmpty(username, password)) {
             s_logger.debug("Username or Password cannot be empty");
             return new Pair<Boolean, ActionOnFailedAuthentication>(false, null);
         }
diff --git a/plugins/user-authenticators/pbkdf2/src/main/java/org/apache/cloudstack/server/auth/PBKDF2UserAuthenticator.java b/plugins/user-authenticators/pbkdf2/src/main/java/org/apache/cloudstack/server/auth/PBKDF2UserAuthenticator.java
index fb4dd62..733bde7 100644
--- a/plugins/user-authenticators/pbkdf2/src/main/java/org/apache/cloudstack/server/auth/PBKDF2UserAuthenticator.java
+++ b/plugins/user-authenticators/pbkdf2/src/main/java/org/apache/cloudstack/server/auth/PBKDF2UserAuthenticator.java
@@ -25,7 +25,7 @@ import java.util.Map;
 
 import javax.inject.Inject;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.bouncycastle.crypto.PBEParametersGenerator;
 import org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator;
@@ -55,7 +55,7 @@ public class PBKDF2UserAuthenticator extends AdapterBase implements UserAuthenti
             s_logger.debug("Retrieving user: " + username);
         }
 
-        if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {
+        if (StringUtils.isAnyEmpty(username, password)) {
             s_logger.debug("Username or Password cannot be empty");
             return new Pair<Boolean, ActionOnFailedAuthentication>(false, null);
         }
diff --git a/plugins/user-authenticators/plain-text/src/main/java/com/cloud/server/auth/PlainTextUserAuthenticator.java b/plugins/user-authenticators/plain-text/src/main/java/com/cloud/server/auth/PlainTextUserAuthenticator.java
index caddd20..3740d70 100644
--- a/plugins/user-authenticators/plain-text/src/main/java/com/cloud/server/auth/PlainTextUserAuthenticator.java
+++ b/plugins/user-authenticators/plain-text/src/main/java/com/cloud/server/auth/PlainTextUserAuthenticator.java
@@ -19,7 +19,7 @@ import java.util.Map;
 
 import javax.inject.Inject;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.user.UserAccount;
@@ -39,7 +39,7 @@ public class PlainTextUserAuthenticator extends AdapterBase implements UserAuthe
             s_logger.debug("Retrieving user: " + username);
         }
 
-        if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {
+        if (StringUtils.isAnyEmpty(username, password)) {
             s_logger.debug("Username or Password cannot be empty");
             return new Pair<Boolean, ActionOnFailedAuthentication>(false, null);
         }
diff --git a/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/SAML2LoginAPIAuthenticatorCmd.java b/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/SAML2LoginAPIAuthenticatorCmd.java
index 4b48646..85279ea 100644
--- a/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/SAML2LoginAPIAuthenticatorCmd.java
+++ b/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/SAML2LoginAPIAuthenticatorCmd.java
@@ -46,7 +46,7 @@ import org.apache.cloudstack.saml.SAMLPluginConstants;
 import org.apache.cloudstack.saml.SAMLProviderMetadata;
 import org.apache.cloudstack.saml.SAMLTokenVO;
 import org.apache.cloudstack.saml.SAMLUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.opensaml.DefaultBootstrap;
 import org.opensaml.saml2.core.Assertion;
diff --git a/plugins/user-authenticators/sha256salted/src/main/java/com/cloud/server/auth/SHA256SaltedUserAuthenticator.java b/plugins/user-authenticators/sha256salted/src/main/java/com/cloud/server/auth/SHA256SaltedUserAuthenticator.java
index 27ab8e9..0b87bd4 100644
--- a/plugins/user-authenticators/sha256salted/src/main/java/com/cloud/server/auth/SHA256SaltedUserAuthenticator.java
+++ b/plugins/user-authenticators/sha256salted/src/main/java/com/cloud/server/auth/SHA256SaltedUserAuthenticator.java
@@ -24,7 +24,7 @@ import java.util.Map;
 
 import javax.inject.Inject;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.bouncycastle.util.encoders.Base64;
 
@@ -51,7 +51,7 @@ public class SHA256SaltedUserAuthenticator extends AdapterBase implements UserAu
             s_logger.debug("Retrieving user: " + username);
         }
 
-        if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {
+        if (StringUtils.isAnyEmpty(username, password)) {
             s_logger.debug("Username or Password cannot be empty");
             return new Pair<Boolean, ActionOnFailedAuthentication>(false, null);
         }
diff --git a/server/src/main/java/com/cloud/api/ApiDBUtils.java b/server/src/main/java/com/cloud/api/ApiDBUtils.java
index 28bafe2..7f41993 100644
--- a/server/src/main/java/com/cloud/api/ApiDBUtils.java
+++ b/server/src/main/java/com/cloud/api/ApiDBUtils.java
@@ -249,7 +249,6 @@ import com.cloud.user.dao.UserStatisticsDao;
 import com.cloud.uservm.UserVm;
 import com.cloud.utils.EnumUtils;
 import com.cloud.utils.Pair;
-import com.cloud.utils.StringUtils;
 import com.cloud.vm.ConsoleProxyVO;
 import com.cloud.vm.DomainRouterVO;
 import com.cloud.vm.InstanceGroup;
@@ -329,6 +328,7 @@ import org.apache.cloudstack.framework.jobs.dao.AsyncJobDao;
 import org.apache.cloudstack.resourcedetail.dao.DiskOfferingDetailsDao;
 import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
+import org.apache.commons.lang3.StringUtils;
 
 import javax.annotation.PostConstruct;
 import javax.inject.Inject;
diff --git a/server/src/main/java/com/cloud/api/ApiResponseHelper.java b/server/src/main/java/com/cloud/api/ApiResponseHelper.java
index 95aebc8..e105676 100644
--- a/server/src/main/java/com/cloud/api/ApiResponseHelper.java
+++ b/server/src/main/java/com/cloud/api/ApiResponseHelper.java
@@ -338,7 +338,6 @@ import com.cloud.user.UserStatisticsVO;
 import com.cloud.user.dao.UserStatisticsDao;
 import com.cloud.uservm.UserVm;
 import com.cloud.utils.Pair;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.crypt.DBEncryptionUtil;
 import com.cloud.utils.db.EntityManager;
 import com.cloud.utils.db.SearchBuilder;
@@ -363,7 +362,7 @@ import com.cloud.vm.dao.NicSecondaryIpVO;
 import com.cloud.vm.snapshot.VMSnapshot;
 import com.cloud.vm.snapshot.VMSnapshotVO;
 import com.cloud.vm.snapshot.dao.VMSnapshotDao;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public class ApiResponseHelper implements ResponseGenerator {
 
@@ -646,7 +645,7 @@ public class ApiResponseHelper implements ResponseGenerator {
         UserVm vm = ApiDBUtils.findUserVmById(vmSnapshot.getVmId());
         if (vm != null) {
             vmSnapshotResponse.setVirtualMachineId(vm.getUuid());
-            vmSnapshotResponse.setVirtualMachineName(Strings.isNullOrEmpty(vm.getDisplayName()) ? vm.getHostName() : vm.getDisplayName());
+            vmSnapshotResponse.setVirtualMachineName(StringUtils.isEmpty(vm.getDisplayName()) ? vm.getHostName() : vm.getDisplayName());
             vmSnapshotResponse.setHypervisor(vm.getHypervisorType());
             DataCenterVO datacenter = ApiDBUtils.findZoneById(vm.getDataCenterId());
             if (datacenter != null) {
diff --git a/server/src/main/java/com/cloud/api/dispatch/ParamProcessWorker.java b/server/src/main/java/com/cloud/api/dispatch/ParamProcessWorker.java
index e05a982..a850634 100644
--- a/server/src/main/java/com/cloud/api/dispatch/ParamProcessWorker.java
+++ b/server/src/main/java/com/cloud/api/dispatch/ParamProcessWorker.java
@@ -17,8 +17,6 @@
 
 package com.cloud.api.dispatch;
 
-import static org.apache.commons.lang.StringUtils.isNotBlank;
-
 import java.lang.reflect.Field;
 import java.text.DateFormat;
 import java.text.ParseException;
@@ -63,7 +61,7 @@ import com.cloud.user.AccountManager;
 import com.cloud.utils.DateUtil;
 import com.cloud.utils.db.EntityManager;
 import com.cloud.utils.exception.CloudRuntimeException;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public class ParamProcessWorker implements DispatchWorker {
 
@@ -94,7 +92,7 @@ public class ParamProcessWorker implements DispatchWorker {
     }
 
     private void validateNonEmptyString(final Object param, final String argName) {
-        if (param == null || Strings.isNullOrEmpty(param.toString())) {
+        if (param == null || StringUtils.isEmpty(param.toString())) {
             throw new InvalidParameterValueException(String.format("Empty or null value provided for API arg: %s", argName));
         }
     }
@@ -346,7 +344,7 @@ public class ParamProcessWorker implements DispatchWorker {
                 // Assuming that the parameters have been checked for required before now,
                 // we ignore blank or null values and defer to the command to set a default
                 // value for optional parameters ...
-                if (paramObj != null && isNotBlank(paramObj.toString())) {
+                if (paramObj != null && StringUtils.isNotBlank(paramObj.toString())) {
                     field.set(cmdObj, Float.valueOf(paramObj.toString()));
                 }
                 break;
@@ -354,7 +352,7 @@ public class ParamProcessWorker implements DispatchWorker {
                 // Assuming that the parameters have been checked for required before now,
                 // we ignore blank or null values and defer to the command to set a default
                 // value for optional parameters ...
-                if (paramObj != null && isNotBlank(paramObj.toString())) {
+                if (paramObj != null && StringUtils.isNotBlank(paramObj.toString())) {
                     field.set(cmdObj, Double.valueOf(paramObj.toString()));
                 }
                 break;
@@ -362,7 +360,7 @@ public class ParamProcessWorker implements DispatchWorker {
                 // Assuming that the parameters have been checked for required before now,
                 // we ignore blank or null values and defer to the command to set a default
                 // value for optional parameters ...
-                if (paramObj != null && isNotBlank(paramObj.toString())) {
+                if (paramObj != null && StringUtils.isNotBlank(paramObj.toString())) {
                     field.set(cmdObj, Integer.valueOf(paramObj.toString()));
                 }
                 break;
diff --git a/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java b/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java
index 971d409..0a0f528 100644
--- a/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java
+++ b/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java
@@ -237,7 +237,6 @@ import com.cloud.user.dao.UserDao;
 import com.cloud.utils.DateUtil;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.Ternary;
 import com.cloud.utils.db.Filter;
 import com.cloud.utils.db.GenericSearchBuilder;
@@ -256,7 +255,7 @@ import com.cloud.vm.VmDetailConstants;
 import com.cloud.vm.dao.DomainRouterDao;
 import com.cloud.vm.dao.UserVmDao;
 import com.cloud.vm.dao.VMInstanceDao;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 @Component
 public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements QueryService, Configurable {
@@ -791,7 +790,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
         boolean listAll = cmd.listAll();
         Long projectId = cmd.getProjectId();
 
-        if (projectId == null && ResourceObjectType.Project.name().equalsIgnoreCase(resourceType) && !Strings.isNullOrEmpty(resourceId)) {
+        if (projectId == null && ResourceObjectType.Project.name().equalsIgnoreCase(resourceType) && StringUtils.isNotEmpty(resourceId)) {
             try {
                 projectId = Long.parseLong(resourceId);
             } catch (final NumberFormatException e) {
@@ -1567,7 +1566,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
                     }
                     accountId = owner.getId();
                 }
-                if (!Strings.isNullOrEmpty(username)) {
+                if (StringUtils.isNotEmpty(username)) {
                     User owner = userDao.getUserByName(username, domainId);
                     if (owner == null) {
                         throw new InvalidParameterValueException("Unable to find user " + username + " in domain " + domainId);
@@ -1581,7 +1580,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
                 if (accountName != null) {
                     throw new InvalidParameterValueException("could not find account " + accountName + " because domain is not specified");
                 }
-                if (!Strings.isNullOrEmpty(username)) {
+                if (StringUtils.isNotEmpty(username)) {
                     throw new InvalidParameterValueException("could not find user " + username + " because domain is not specified");
                 }
             }
@@ -1594,7 +1593,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
                 throw new PermissionDeniedException("Can't list domain id= " + domainId + " projects; unauthorized");
             }
 
-            if (!Strings.isNullOrEmpty(username) && !username.equals(user.getUsername())) {
+            if (StringUtils.isNotEmpty(username) && !username.equals(user.getUsername())) {
                 throw new PermissionDeniedException("Can't list user " + username + " projects; unauthorized");
             }
 
@@ -3180,7 +3179,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
         }
 
         if (currentVmOffering != null) {
-            List<String> storageTags = StringUtils.csvTagsToList(currentVmOffering.getTags());
+            List<String> storageTags = com.cloud.utils.StringUtils.csvTagsToList(currentVmOffering.getTags());
             if (!storageTags.isEmpty()) {
                 SearchBuilder<ServiceOfferingJoinVO> sb = _srvOfferingJoinDao.createSearchBuilder();
                 for(String tag : storageTags) {
@@ -3195,7 +3194,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
                 sc.addAnd("storageTags", SearchCriteria.Op.SC, scc);
             }
 
-            List<String> hostTags = StringUtils.csvTagsToList(currentVmOffering.getHostTag());
+            List<String> hostTags = com.cloud.utils.StringUtils.csvTagsToList(currentVmOffering.getHostTag());
             if (!hostTags.isEmpty()) {
                 SearchBuilder<ServiceOfferingJoinVO> sb = _srvOfferingJoinDao.createSearchBuilder();
                 for(String tag : hostTags) {
@@ -3847,10 +3846,10 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
             case Template:
             case UserVm:
                 HypervisorType hypervisorType = HypervisorType.None;
-                if (!Strings.isNullOrEmpty(resourceUuid) && ResourceObjectType.Template.equals(type)) {
+                if (StringUtils.isNotEmpty(resourceUuid) && ResourceObjectType.Template.equals(type)) {
                     hypervisorType = _templateDao.findByUuid(resourceUuid).getHypervisorType();
                 }
-                if (!Strings.isNullOrEmpty(resourceUuid) && ResourceObjectType.UserVm.equals(type)) {
+                if (StringUtils.isNotEmpty(resourceUuid) && ResourceObjectType.UserVm.equals(type)) {
                     hypervisorType = _vmInstanceDao.findByUuid(resourceUuid).getHypervisorType();
                 }
                 fillVMOrTemplateDetailOptions(options, hypervisorType);
diff --git a/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java
index 7571ffb..c4bb69f 100644
--- a/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java
+++ b/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java
@@ -40,7 +40,7 @@ import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
 import org.apache.cloudstack.ha.HAResource;
 import org.apache.cloudstack.ha.dao.HAConfigDao;
 import org.apache.cloudstack.outofbandmanagement.dao.OutOfBandManagementDao;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
@@ -105,7 +105,7 @@ public class HostJoinDaoImpl extends GenericDaoBase<HostJoinVO, Long> implements
     private boolean containsHostHATag(final String tags) {
         boolean result = false;
         String haTag = ApiDBUtils.getHaTag();
-        if (StringUtils.isNotEmpty(haTag) && StringUtils.isNotEmpty(tags)) {
+        if (StringUtils.isNoneEmpty(haTag, tags)) {
             List<String> tagsList = Arrays.asList(tags.split(","));
             if (tagsList.contains(haTag)) {
                 result = true;
diff --git a/server/src/main/java/com/cloud/api/query/vo/HostJoinVO.java b/server/src/main/java/com/cloud/api/query/vo/HostJoinVO.java
index d7a3bfe..bb3b693 100644
--- a/server/src/main/java/com/cloud/api/query/vo/HostJoinVO.java
+++ b/server/src/main/java/com/cloud/api/query/vo/HostJoinVO.java
@@ -33,12 +33,12 @@ import com.cloud.host.Status;
 import com.cloud.hypervisor.Hypervisor.HypervisorType;
 import com.cloud.org.Cluster;
 import com.cloud.resource.ResourceState;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.db.GenericDao;
 import org.apache.cloudstack.api.Identity;
 import org.apache.cloudstack.api.InternalIdentity;
 import org.apache.cloudstack.ha.HAConfig;
 import org.apache.cloudstack.outofbandmanagement.OutOfBandManagement;
+import org.apache.commons.lang3.StringUtils;
 
 /**
  * Host DB view.
diff --git a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java
index bea9cd0..a17d8b4 100755
--- a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java
@@ -239,7 +239,6 @@ import com.cloud.user.dao.AccountDao;
 import com.cloud.user.dao.UserDao;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.UriUtils;
 import com.cloud.utils.component.ManagerBase;
 import com.cloud.utils.db.DB;
@@ -265,7 +264,7 @@ import com.cloud.vm.dao.VMInstanceDao;
 import com.google.common.base.Enums;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import com.google.common.collect.Sets;
 
 public class ConfigurationManagerImpl extends ManagerBase implements ConfigurationManager, ConfigurationService, Configurable {
@@ -551,7 +550,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
             @Override
             public void onPublishMessage(String serderAddress, String subject, Object args) {
                 String globalSettingUpdated = (String) args;
-                if (Strings.isNullOrEmpty(globalSettingUpdated)) {
+                if (StringUtils.isEmpty(globalSettingUpdated)) {
                     return;
                 }
                 if (globalSettingUpdated.equals(ApiServiceConfiguration.ManagementServerAddresses.key()) ||
@@ -1167,7 +1166,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
         checkIpRange(startIp, endIp, cidrAddress, cidrSize);
 
         // Check if the IP range overlaps with the public ip
-        if(!Strings.isNullOrEmpty(startIp)) {
+        if(StringUtils.isNotEmpty(startIp)) {
             checkOverlapPublicIpRange(zoneId, startIp, endIp);
         }
 
@@ -1301,7 +1300,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
         String endIp = cmd.getEndIp();
         final boolean forSystemVms = cmd.isForSystemVms();
         String vlan = cmd.getVlan();
-        if (!(Strings.isNullOrEmpty(vlan) || vlan.startsWith(BroadcastDomainType.Vlan.scheme()))) {
+        if (StringUtils.isNotEmpty(vlan) && !vlan.startsWith(BroadcastDomainType.Vlan.scheme())) {
             vlan = BroadcastDomainType.Vlan.toUri(vlan).toString();
         }
 
@@ -1678,11 +1677,11 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
 
     private void verifyIpRangeParameters(String startIP, String endIp) {
 
-        if (!Strings.isNullOrEmpty(startIP) && !NetUtils.isValidIp4(startIP)) {
+        if (StringUtils.isNotEmpty(startIP) && !NetUtils.isValidIp4(startIP)) {
             throw new InvalidParameterValueException("The current start address of the IP range " + startIP + " is not a valid IP address.");
         }
 
-        if (!Strings.isNullOrEmpty(endIp) && !NetUtils.isValidIp4(endIp)) {
+        if (StringUtils.isNotEmpty(endIp) && !NetUtils.isValidIp4(endIp)) {
             throw new InvalidParameterValueException("The current end address of the IP range " + endIp + " is not a valid IP address.");
         }
 
@@ -1730,7 +1729,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
         // pod has allocated private IP addresses
         if (podHasAllocatedPrivateIPs(id)) {
 
-            if (!Strings.isNullOrEmpty(netmask)) {
+            if (StringUtils.isNotEmpty(netmask)) {
                 final long newCidr = NetUtils.getCidrSize(netmask);
                 final long oldCidr = pod.getCidrSize();
 
@@ -1867,7 +1866,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
 
         // endIp is an optional parameter; if not specified - default it to the
         // end ip of the pod's cidr
-        if (!Strings.isNullOrEmpty(startIp)) {
+        if (StringUtils.isNotEmpty(startIp)) {
             if (endIp == null) {
                 endIp = NetUtils.getIpRangeEndIpFromCidr(cidrAddress, cidrSize);
             }
@@ -1879,7 +1878,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
         // Create the new pod in the database
         String ipRange;
 
-        if (!Strings.isNullOrEmpty(startIp)) {
+        if (StringUtils.isNotEmpty(startIp)) {
             ipRange = startIp + "-" + endIp + "-" + DefaultForSystemVmsForPodIpRange + "-" + DefaultVlanForPodIpRange;
         } else {
             throw new InvalidParameterValueException("Start ip is required parameter");
@@ -1900,7 +1899,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
 
                 final HostPodVO pod = _podDao.persist(podFinal);
 
-                if (!Strings.isNullOrEmpty(startIp)) {
+                if (StringUtils.isNotEmpty(startIp)) {
                     _zoneDao.addPrivateIpAddress(zoneId, pod.getId(), startIp, endIpFinal, false, null);
                 }
 
@@ -2021,24 +2020,24 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
     private void checkIpRange(final String startIp, final String endIp, final String cidrAddress, final long cidrSize) {
         //Checking not null for start IP as well. Previously we assumed to be not null always.
         //But the check is required for the change in updatePod API.
-        if (!Strings.isNullOrEmpty(startIp) && !NetUtils.isValidIp4(startIp)) {
+        if (StringUtils.isNotEmpty(startIp) && !NetUtils.isValidIp4(startIp)) {
             throw new InvalidParameterValueException("The start address of the IP range is not a valid IP address.");
         }
 
-        if (!Strings.isNullOrEmpty(endIp) && !NetUtils.isValidIp4(endIp)) {
+        if (StringUtils.isNotEmpty(endIp) && !NetUtils.isValidIp4(endIp)) {
             throw new InvalidParameterValueException("The end address of the IP range is not a valid IP address.");
         }
 
         //Not null check is required for the change in updatePod API.
-        if (!Strings.isNullOrEmpty(startIp) && !NetUtils.getCidrSubNet(startIp, cidrSize).equalsIgnoreCase(NetUtils.getCidrSubNet(cidrAddress, cidrSize))) {
+        if (StringUtils.isNotEmpty(startIp) && !NetUtils.getCidrSubNet(startIp, cidrSize).equalsIgnoreCase(NetUtils.getCidrSubNet(cidrAddress, cidrSize))) {
             throw new InvalidParameterValueException("The start address of the IP range is not in the CIDR subnet.");
         }
 
-        if (!Strings.isNullOrEmpty(endIp) && !NetUtils.getCidrSubNet(endIp, cidrSize).equalsIgnoreCase(NetUtils.getCidrSubNet(cidrAddress, cidrSize))) {
+        if (StringUtils.isNotEmpty(endIp) && !NetUtils.getCidrSubNet(endIp, cidrSize).equalsIgnoreCase(NetUtils.getCidrSubNet(cidrAddress, cidrSize))) {
             throw new InvalidParameterValueException("The end address of the IP range is not in the CIDR subnet.");
         }
 
-        if (!Strings.isNullOrEmpty(endIp) && NetUtils.ip2Long(startIp) > NetUtils.ip2Long(endIp)) {
+        if (StringUtils.isNotEmpty(endIp) && NetUtils.ip2Long(startIp) > NetUtils.ip2Long(endIp)) {
             throw new InvalidParameterValueException("The start IP address must have a lower value than the end IP address.");
         }
 
@@ -2748,7 +2747,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
 
         final ProvisioningType typedProvisioningType = ProvisioningType.getProvisioningType(provisioningType);
 
-        tags = StringUtils.cleanupTags(tags);
+        tags = com.cloud.utils.StringUtils.cleanupTags(tags);
 
         ServiceOfferingVO offering = new ServiceOfferingVO(name, cpu, ramSize, speed, networkRate, null, offerHA,
                 limitResourceUse, volatileVm, displayText, typedProvisioningType, localStorageRequired, false, tags, isSystem, vmType,
@@ -3162,7 +3161,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
             throw new InvalidParameterValueException(String.format("Unable to create disk offering by user: %s because it is not root-admin or domain-admin", user.getUuid()));
         }
 
-        tags = StringUtils.cleanupTags(tags);
+        tags = com.cloud.utils.StringUtils.cleanupTags(tags);
         final DiskOfferingVO newDiskOffering = new DiskOfferingVO(name, description, typedProvisioningType, diskSize, tags, isCustomized,
                 isCustomizedIops, minIops, maxIops);
         newDiskOffering.setUseLocalStorage(localStorageRequired);
@@ -3552,7 +3551,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
     protected void updateOfferingTagsIfIsNotNull(String tags, DiskOfferingVO diskOffering) {
         if (tags == null) { return; }
         if (StringUtils.isNotBlank(tags)) {
-            tags = StringUtils.cleanupTags(tags);
+            tags = com.cloud.utils.StringUtils.cleanupTags(tags);
             List<StoragePoolVO> pools = _storagePoolDao.listStoragePoolsWithActiveVolumesByOfferingId(diskOffering.getId());
             if (CollectionUtils.isNotEmpty(pools)) {
                 List<String> listOfTags = Arrays.asList(tags.split(","));
@@ -3582,7 +3581,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
             return;
         }
         if (StringUtils.isNotBlank(hostTags)) {
-            hostTags = StringUtils.cleanupTags(hostTags);
+            hostTags = com.cloud.utils.StringUtils.cleanupTags(hostTags);
             List<HostVO> hosts = _hostDao.listHostsWithActiveVMs(offering.getId());
             if (CollectionUtils.isNotEmpty(hosts)) {
                 List<String> listOfHostTags = Arrays.asList(hostTags.split(","));
@@ -3604,7 +3603,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
      * Verify if name or displayText are not blank, tags is not null, sortkey and displayDiskOffering is not null
      */
     protected boolean shouldUpdateDiskOffering(String name, String displayText, Integer sortKey, Boolean displayDiskOffering, String tags, String cacheMode) {
-        return StringUtils.isNotBlank(name) || StringUtils.isNotBlank(displayText) || tags != null || sortKey != null || displayDiskOffering != null || StringUtils.isNotBlank(cacheMode);
+        return !StringUtils.isAllBlank(name, displayText, cacheMode) || tags != null || sortKey != null || displayDiskOffering != null;
     }
 
     protected boolean shouldUpdateBytesRateParameters(Long bytesReadRate, Long bytesReadRateMax, Long bytesReadRateMaxLength, Long bytesWriteRate, Long bytesWriteRateMax, Long bytesWriteRateMaxLength) {
@@ -4518,7 +4517,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
         endIp = MoreObjects.firstNonNull(endIp, currentEndIP);
 
         final String cidr = NetUtils.ipAndNetMaskToCidr(gateway, netmask);
-        if (Strings.isNullOrEmpty(cidr)) {
+        if (StringUtils.isEmpty(cidr)) {
             throw new InvalidParameterValueException(String.format("Invalid gateway (%s) or netmask (%s)", gateway, netmask));
         }
         final String cidrAddress = getCidrAddress(cidr);
@@ -4646,8 +4645,8 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
             (List<IPAddressVO> listAllocatedIPs, String startIp, String endIp, Boolean forSystemVms) {
         Collections.sort(listAllocatedIPs, Comparator.comparing(IPAddressVO::getAddress));
         for (IPAddressVO allocatedIP : listAllocatedIPs) {
-            if ((!Strings.isNullOrEmpty(startIp) && NetUtils.ip2Long(startIp) > NetUtils.ip2Long(allocatedIP.getAddress().addr()))
-                    || (!Strings.isNullOrEmpty(endIp) && NetUtils.ip2Long(endIp) < NetUtils.ip2Long(allocatedIP.getAddress().addr()))) {
+            if ((StringUtils.isNotEmpty(startIp) && NetUtils.ip2Long(startIp) > NetUtils.ip2Long(allocatedIP.getAddress().addr()))
+                    || (StringUtils.isNotEmpty(endIp) && NetUtils.ip2Long(endIp) < NetUtils.ip2Long(allocatedIP.getAddress().addr()))) {
                 throw new InvalidParameterValueException(String.format("The start IP address must be less than or equal to %s which is already in use. "
                                 + "The end IP address must be greater than or equal to %s which is already in use. "
                                 + "There are %d IPs already allocated in this range.",
@@ -4662,9 +4661,9 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
     private void checkAllocatedIpv6sAreWithinVlanRange(List<UserIpv6AddressVO> listAllocatedIPs, String startIpv6, String endIpv6) {
         Collections.sort(listAllocatedIPs, Comparator.comparing(UserIpv6AddressVO::getAddress));
         for (UserIpv6AddressVO allocatedIP : listAllocatedIPs) {
-            if ((!Strings.isNullOrEmpty(startIpv6)
+            if ((StringUtils.isNotEmpty(startIpv6)
                     && IPv6Address.fromString(startIpv6).toBigInteger().compareTo(IPv6Address.fromString(allocatedIP.getAddress()).toBigInteger()) > 0)
-                    || (!Strings.isNullOrEmpty(endIpv6)
+                    || (StringUtils.isNotEmpty(endIpv6)
                     && IPv6Address.fromString(endIpv6).toBigInteger().compareTo(IPv6Address.fromString(allocatedIP.getAddress()).toBigInteger()) < 0)) {
                 throw new InvalidParameterValueException(String.format("The start IPv6 address must be less than or equal to %s which is already in use. "
                                 + "The end IPv6 address must be greater than or equal to %s which is already in use. "
@@ -5776,7 +5775,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
 
         final String multicastRateStr = _configDao.getValue("multicast.throttling.rate");
         final int multicastRate = multicastRateStr == null ? 10 : Integer.parseInt(multicastRateStr);
-        tags = StringUtils.cleanupTags(tags);
+        tags = com.cloud.utils.StringUtils.cleanupTags(tags);
 
         // specifyVlan should always be true for Shared network offerings
         if (!specifyVlan && type == GuestType.Shared) {
@@ -6222,7 +6221,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
             ListIterator<NetworkOfferingJoinVO> it = offerings.listIterator();
             while (it.hasNext()) {
                 NetworkOfferingJoinVO offering = it.next();
-                if (!Strings.isNullOrEmpty(offering.getDomainId())) {
+                if (StringUtils.isNotEmpty(offering.getDomainId())) {
                     boolean toRemove = false;
                     String[] domainIdsArray = offering.getDomainId().split(",");
                     for (String domainIdString : domainIdsArray) {
@@ -6325,14 +6324,14 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
             }
 
             // Now apply pagination
-            final List<NetworkOfferingJoinVO> wPagination = StringUtils.applyPagination(supportedOfferings, cmd.getStartIndex(), cmd.getPageSizeVal());
+            final List<NetworkOfferingJoinVO> wPagination = com.cloud.utils.StringUtils.applyPagination(supportedOfferings, cmd.getStartIndex(), cmd.getPageSizeVal());
             if (wPagination != null) {
                 final Pair<List<? extends NetworkOffering>, Integer> listWPagination = new Pair<List<? extends NetworkOffering>, Integer>(wPagination, supportedOfferings.size());
                 return listWPagination;
             }
             return new Pair<List<? extends NetworkOffering>, Integer>(supportedOfferings, supportedOfferings.size());
         } else {
-            final List<NetworkOfferingJoinVO> wPagination = StringUtils.applyPagination(offerings, cmd.getStartIndex(), cmd.getPageSizeVal());
+            final List<NetworkOfferingJoinVO> wPagination = com.cloud.utils.StringUtils.applyPagination(offerings, cmd.getStartIndex(), cmd.getPageSizeVal());
             if (wPagination != null) {
                 final Pair<List<? extends NetworkOffering>, Integer> listWPagination = new Pair<>(wPagination, offerings.size());
                 return listWPagination;
diff --git a/server/src/main/java/com/cloud/deploy/DeploymentPlanningManagerImpl.java b/server/src/main/java/com/cloud/deploy/DeploymentPlanningManagerImpl.java
index 5a42f6e..436828f 100644
--- a/server/src/main/java/com/cloud/deploy/DeploymentPlanningManagerImpl.java
+++ b/server/src/main/java/com/cloud/deploy/DeploymentPlanningManagerImpl.java
@@ -36,7 +36,6 @@ import com.cloud.storage.VMTemplateVO;
 import com.cloud.storage.dao.VMTemplateDao;
 import com.cloud.user.AccountVO;
 import com.cloud.user.dao.AccountDao;
-import com.cloud.utils.StringUtils;
 import com.cloud.exception.StorageUnavailableException;
 import com.cloud.utils.db.Filter;
 import com.cloud.utils.fsm.StateMachine2;
@@ -45,6 +44,7 @@ import org.apache.cloudstack.framework.config.ConfigKey;
 import org.apache.cloudstack.framework.config.Configurable;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.MapUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.cloudstack.affinity.AffinityGroupProcessor;
 import org.apache.cloudstack.affinity.AffinityGroupService;
diff --git a/server/src/main/java/com/cloud/hypervisor/kvm/dpdk/DpdkHelperImpl.java b/server/src/main/java/com/cloud/hypervisor/kvm/dpdk/DpdkHelperImpl.java
index e26b801..b69a6d4 100644
--- a/server/src/main/java/com/cloud/hypervisor/kvm/dpdk/DpdkHelperImpl.java
+++ b/server/src/main/java/com/cloud/hypervisor/kvm/dpdk/DpdkHelperImpl.java
@@ -22,7 +22,6 @@ import com.cloud.host.dao.HostDao;
 import com.cloud.offering.ServiceOffering;
 import com.cloud.service.ServiceOfferingDetailsVO;
 import com.cloud.service.dao.ServiceOfferingDetailsDao;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.vm.UserVmDetailVO;
 import com.cloud.vm.VMInstanceVO;
@@ -31,6 +30,7 @@ import com.cloud.vm.VirtualMachineProfile;
 import com.cloud.vm.dao.UserVmDetailsDao;
 import com.cloud.vm.dao.VMInstanceDao;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import javax.inject.Inject;
diff --git a/server/src/main/java/com/cloud/network/NetworkModelImpl.java b/server/src/main/java/com/cloud/network/NetworkModelImpl.java
index 3e3c3e0..d4a9356 100644
--- a/server/src/main/java/com/cloud/network/NetworkModelImpl.java
+++ b/server/src/main/java/com/cloud/network/NetworkModelImpl.java
@@ -2218,7 +2218,7 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel, Confi
     @Override
     public void checkIp6Parameters(String startIPv6, String endIPv6, String ip6Gateway, String ip6Cidr) throws InvalidParameterValueException {
 
-        if (StringUtils.isBlank(ip6Gateway) || StringUtils.isBlank(ip6Cidr)) {
+        if (org.apache.commons.lang3.StringUtils.isAnyBlank(ip6Gateway, ip6Cidr)) {
             throw new InvalidParameterValueException("ip6Gateway and ip6Cidr should be defined for an IPv6 network work properly");
         }
 
@@ -2233,7 +2233,7 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel, Confi
             throw new InvalidParameterValueException("ip6Gateway is not in ip6cidr indicated network!");
         }
 
-        if (StringUtils.isNotBlank(startIPv6)) {
+        if (org.apache.commons.lang3.StringUtils.isNotBlank(startIPv6)) {
             if (!NetUtils.isValidIp6(startIPv6)) {
                 throw new InvalidParameterValueException("Invalid format for the startIPv6 parameter");
             }
@@ -2242,7 +2242,7 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel, Confi
             }
         }
 
-        if (StringUtils.isNotBlank(endIPv6)) {
+        if (org.apache.commons.lang3.StringUtils.isNotBlank(endIPv6)) {
             if (!NetUtils.isValidIp6(endIPv6)) {
                 throw new InvalidParameterValueException("Invalid format for the endIPv6 parameter");
             }
diff --git a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java
index 7a79cfa..979b983 100644
--- a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java
+++ b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java
@@ -16,9 +16,6 @@
 // under the License.
 package com.cloud.network;
 
-import static org.apache.commons.lang.StringUtils.isBlank;
-import static org.apache.commons.lang.StringUtils.isNotBlank;
-
 import java.net.Inet6Address;
 import java.net.InetAddress;
 import java.net.URI;
@@ -64,6 +61,7 @@ import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
 import org.apache.cloudstack.framework.messagebus.MessageBus;
 import org.apache.cloudstack.framework.messagebus.PublishScope;
 import org.apache.cloudstack.network.element.InternalLoadBalancerElementService;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.api.ApiDBUtils;
@@ -172,7 +170,6 @@ import com.cloud.user.dao.UserDao;
 import com.cloud.utils.Journal;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.component.ManagerBase;
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.EntityManager;
@@ -734,10 +731,10 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C
         String ip6addr = null;
         //Isolated network can exist in Basic zone only, so no need to verify the zone type
         if (network.getGuestType() == Network.GuestType.Isolated) {
-            if ((ipv4Address != null || NetUtils.isIpv4(network.getGateway()) && isBlank(ipv6Address))) {
+            if ((ipv4Address != null || NetUtils.isIpv4(network.getGateway()) && StringUtils.isBlank(ipv6Address))) {
                 ipaddr = _ipAddrMgr.allocateGuestIP(network, ipv4Address);
             }
-            if (isNotBlank(ipv6Address)) {
+            if (StringUtils.isNotBlank(ipv6Address)) {
                 ip6addr = ipv6AddrMgr.allocateGuestIpv6(network, ipv6Address);
             }
         } else if (network.getGuestType() == Network.GuestType.Shared) {
@@ -771,7 +768,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C
             return null;
         }
 
-        if (isNotBlank(ipaddr) || isNotBlank(ip6addr)) {
+        if (!StringUtils.isAllBlank(ipaddr, ip6addr)) {
             // we got the ip addr so up the nics table and secodary ip
             final String ip4AddrFinal = ipaddr;
             final String ip6AddrFinal = ip6addr;
@@ -1039,14 +1036,14 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C
 
     private void validateRouterIps(String routerIp, String routerIpv6, String startIp, String endIp, String gateway,
                                    String netmask, String startIpv6, String endIpv6, String ip6Cidr) {
-        if (isNotBlank(routerIp)) {
+        if (StringUtils.isNotBlank(routerIp)) {
             if (startIp != null && endIp == null) {
                 endIp = startIp;
             }
             if (!NetUtils.isValidIp4(routerIp)) {
                 throw new CloudRuntimeException("Router IPv4 IP provided is of incorrect format");
             }
-            if (isNotBlank(startIp) && isNotBlank(endIp)) {
+            if (StringUtils.isNoneBlank(startIp, endIp)) {
                 if (!NetUtils.isIpInRange(routerIp, startIp, endIp)) {
                     throw new CloudRuntimeException("Router IPv4 IP provided is not within the specified range: " + startIp + " - " + endIp);
                 }
@@ -1057,14 +1054,14 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C
                 }
             }
         }
-        if (isNotBlank(routerIpv6)) {
+        if (StringUtils.isNotBlank(routerIpv6)) {
             if (startIpv6 != null && endIpv6 == null) {
                 endIpv6 = startIpv6;
             }
             if (!NetUtils.isValidIp6(routerIpv6)) {
                 throw new CloudRuntimeException("Router IPv6 address provided is of incorrect format");
             }
-            if (isNotBlank(startIpv6) && isNotBlank(endIpv6)) {
+            if (StringUtils.isNoneBlank(startIpv6, endIpv6)) {
                 String ipv6Range = startIpv6 + "-" + endIpv6;
                 if (!NetUtils.isIp6InRange(routerIpv6, ipv6Range)) {
                     throw new CloudRuntimeException("Router IPv6 address provided is not within the specified range: " + startIpv6 + " - " + endIpv6);
@@ -1202,12 +1199,12 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C
             throw new InvalidParameterValueException("Only Admins can create network with guest type " + GuestType.Shared);
         }
 
-        if (ntwkOff.getGuestType() != GuestType.Shared && (isNotBlank(routerIp) || isNotBlank(routerIpv6))) {
+        if (ntwkOff.getGuestType() != GuestType.Shared && (!StringUtils.isAllBlank(routerIp, routerIpv6))) {
             throw new InvalidParameterValueException("Router IP can be specified only for Shared networks");
         }
 
         if (ntwkOff.getGuestType() == GuestType.Shared && !_networkModel.isProviderForNetworkOffering(Provider.VirtualRouter, networkOfferingId)
-                && (isNotBlank(routerIp) || isNotBlank(routerIpv6))) {
+                && (!StringUtils.isAllBlank(routerIp, routerIpv6))) {
             throw new InvalidParameterValueException("Virtual Router is not a supported provider for the Shared network, hence router ip should not be provided");
         }
 
@@ -1256,7 +1253,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C
         if (startIP != null) {
             ipv4 = true;
         }
-        if (isNotBlank(ip6Cidr) && isNotBlank(ip6Gateway)) {
+        if (StringUtils.isNoneBlank(ip6Cidr, ip6Gateway)) {
             ipv6 = true;
         }
 
@@ -1335,18 +1332,18 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C
                 throw new InvalidParameterValueException("Can only support create IPv6 network with advance shared network!");
             }
 
-            if(isBlank(zone.getIp6Dns1()) && isBlank(zone.getIp6Dns2())) {
+            if(StringUtils.isAllBlank(zone.getIp6Dns1(), zone.getIp6Dns2())) {
                 throw new InvalidParameterValueException("Can only create IPv6 network if the zone has IPv6 DNS! Please configure the zone IPv6 DNS1 and/or IPv6 DNS2.");
             }
         }
 
         validateRouterIps(routerIp, routerIpv6, startIP, endIP, gateway, netmask, startIPv6, endIPv6, ip6Cidr);
 
-        if (isNotBlank(isolatedPvlan) && (zone.getNetworkType() != NetworkType.Advanced || ntwkOff.getGuestType() == GuestType.Isolated)) {
+        if (StringUtils.isNotBlank(isolatedPvlan) && (zone.getNetworkType() != NetworkType.Advanced || ntwkOff.getGuestType() == GuestType.Isolated)) {
             throw new InvalidParameterValueException("Can only support create Private VLAN network with advanced shared or L2 network!");
         }
 
-        if (isNotBlank(isolatedPvlan) && ipv6) {
+        if (StringUtils.isNotBlank(isolatedPvlan) && ipv6) {
             throw new InvalidParameterValueException("Can only support create Private VLAN network with IPv4!");
         }
 
@@ -1354,7 +1351,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C
         String secondaryVlanId = pvlanPair.first();
         PVlanType privateVlanType = pvlanPair.second();
 
-        if ((isNotBlank(secondaryVlanId) || privateVlanType != null) && isBlank(vlanId)) {
+        if ((StringUtils.isNotBlank(secondaryVlanId) || privateVlanType != null) && StringUtils.isBlank(vlanId)) {
             throw new InvalidParameterValueException("VLAN ID has to be set in order to configure a Private VLAN");
         }
 
@@ -1391,7 +1388,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C
             throw new InvalidParameterValueException("Cannot support IPv6 on network offering with external devices!");
         }
 
-        if (isNotBlank(secondaryVlanId) && providersConfiguredForExternalNetworking(ntwkProviders)) {
+        if (StringUtils.isNotBlank(secondaryVlanId) && providersConfiguredForExternalNetworking(ntwkProviders)) {
             throw new InvalidParameterValueException("Cannot support private vlan on network offering with external devices!");
         }
 
@@ -1464,19 +1461,19 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C
         String secondaryVlanId = pvlanId;
         PVlanType type = null;
 
-        if (isNotBlank(pvlanTypeStr)) {
+        if (StringUtils.isNotBlank(pvlanTypeStr)) {
             PVlanType providedType = PVlanType.fromValue(pvlanTypeStr);
             type = providedType;
-        } else if (isNotBlank(vlanId) && isNotBlank(secondaryVlanId)) {
+        } else if (StringUtils.isNoneBlank(vlanId, secondaryVlanId)) {
             // Preserve the existing functionality
             type = vlanId.equals(secondaryVlanId) ? PVlanType.Promiscuous : PVlanType.Isolated;
         }
 
-        if (isBlank(secondaryVlanId) && type == PVlanType.Promiscuous) {
+        if (StringUtils.isBlank(secondaryVlanId) && type == PVlanType.Promiscuous) {
             secondaryVlanId = vlanId;
         }
 
-        if (isNotBlank(secondaryVlanId)) {
+        if (StringUtils.isNotBlank(secondaryVlanId)) {
             try {
                 Integer.parseInt(secondaryVlanId);
             } catch (NumberFormatException e) {
@@ -1491,11 +1488,11 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C
      * Basic checks for setting up private VLANs, considering the VLAN ID, secondary VLAN ID and private VLAN type
      */
     protected void performBasicPrivateVlanChecks(String vlanId, String secondaryVlanId, PVlanType privateVlanType) {
-        if (isNotBlank(vlanId) && isBlank(secondaryVlanId) && privateVlanType != null && privateVlanType != PVlanType.Promiscuous) {
+        if (StringUtils.isNotBlank(vlanId) && StringUtils.isBlank(secondaryVlanId) && privateVlanType != null && privateVlanType != PVlanType.Promiscuous) {
             throw new InvalidParameterValueException("Private VLAN ID has not been set, therefore Promiscuous type is expected");
-        } else if (isNotBlank(vlanId) && isNotBlank(secondaryVlanId) && !vlanId.equalsIgnoreCase(secondaryVlanId) && privateVlanType == PVlanType.Promiscuous) {
+        } else if (StringUtils.isNoneBlank(vlanId, secondaryVlanId) && !vlanId.equalsIgnoreCase(secondaryVlanId) && privateVlanType == PVlanType.Promiscuous) {
             throw new InvalidParameterValueException("Private VLAN type is set to Promiscuous, but VLAN ID and Secondary VLAN ID differ");
-        } else if (isNotBlank(vlanId) && isNotBlank(secondaryVlanId) && privateVlanType != null && privateVlanType != PVlanType.Promiscuous && vlanId.equalsIgnoreCase(secondaryVlanId)) {
+        } else if (StringUtils.isNoneBlank(vlanId, secondaryVlanId) && privateVlanType != null && privateVlanType != PVlanType.Promiscuous && vlanId.equalsIgnoreCase(secondaryVlanId)) {
             throw new InvalidParameterValueException("Private VLAN type is set to " + privateVlanType + ", but VLAN ID and Secondary VLAN ID are equal");
         }
     }
@@ -1803,7 +1800,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C
         }
 
         //Now apply pagination
-        List<? extends Network> wPagination = StringUtils.applyPagination(networksToReturn, cmd.getStartIndex(), cmd.getPageSizeVal());
+        List<? extends Network> wPagination = com.cloud.utils.StringUtils.applyPagination(networksToReturn, cmd.getStartIndex(), cmd.getPageSizeVal());
         if (wPagination != null) {
             Pair<List<? extends Network>, Integer> listWPagination = new Pair<List<? extends Network>, Integer>(wPagination, networksToReturn.size());
             return listWPagination;
@@ -2857,7 +2854,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C
         for (Network tier : migratedTiers) {
             String tierNetworkOfferingUuid = networkToOffering.get(tier.getUuid());
 
-            if (!isNotBlank(tierNetworkOfferingUuid)) {
+            if (StringUtils.isBlank(tierNetworkOfferingUuid)) {
                 throwInvalidIdException("Failed to resume migrating VPC as the specified tierNetworkOfferings is not complete", String.valueOf(tier.getUuid()), "networkUuid");
             }
 
@@ -3012,7 +3009,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C
                 return false;
             }
 
-            if (!StringUtils.areTagsEqual(oldNetworkOffering.getTags(), newNetworkOffering.getTags())) {
+            if (!com.cloud.utils.StringUtils.areTagsEqual(oldNetworkOffering.getTags(), newNetworkOffering.getTags())) {
                 s_logger.debug("Network offerings " + newNetworkOffering.getUuid() + " and " + oldNetworkOffering.getUuid() + " have different tags, can't upgrade");
                 return false;
             }
diff --git a/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index 1ed4f43..39d4c5f 100644
--- a/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -66,7 +66,7 @@ import org.apache.cloudstack.network.topology.NetworkTopology;
 import org.apache.cloudstack.network.topology.NetworkTopologyContext;
 import org.apache.cloudstack.utils.identity.ManagementServerNode;
 import org.apache.cloudstack.utils.usage.UsageUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.cloud.network.router.deployment.RouterDeploymentDefinitionBuilder;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/server/src/main/java/com/cloud/network/router/VpcNetworkHelperImpl.java b/server/src/main/java/com/cloud/network/router/VpcNetworkHelperImpl.java
index 4e49bd0..8b89f20 100644
--- a/server/src/main/java/com/cloud/network/router/VpcNetworkHelperImpl.java
+++ b/server/src/main/java/com/cloud/network/router/VpcNetworkHelperImpl.java
@@ -28,7 +28,7 @@ import java.util.TreeSet;
 import javax.annotation.PostConstruct;
 import javax.inject.Inject;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.cloud.network.router.deployment.RouterDeploymentDefinition;
 
diff --git a/server/src/main/java/com/cloud/network/security/SecurityGroupManagerImpl.java b/server/src/main/java/com/cloud/network/security/SecurityGroupManagerImpl.java
index 5bb7767..9e5dd4e 100644
--- a/server/src/main/java/com/cloud/network/security/SecurityGroupManagerImpl.java
+++ b/server/src/main/java/com/cloud/network/security/SecurityGroupManagerImpl.java
@@ -51,7 +51,7 @@ import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
 import org.apache.cloudstack.managed.context.ManagedContextRunnable;
 import org.apache.cloudstack.utils.identity.ManagementServerNode;
 import org.apache.commons.codec.digest.DigestUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.agent.AgentManager;
diff --git a/server/src/main/java/com/cloud/network/vpc/NetworkACLServiceImpl.java b/server/src/main/java/com/cloud/network/vpc/NetworkACLServiceImpl.java
index 00667aa..53e113f 100644
--- a/server/src/main/java/com/cloud/network/vpc/NetworkACLServiceImpl.java
+++ b/server/src/main/java/com/cloud/network/vpc/NetworkACLServiceImpl.java
@@ -35,7 +35,7 @@ import org.apache.cloudstack.api.command.user.network.UpdateNetworkACLListCmd;
 import org.apache.cloudstack.context.CallContext;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
@@ -947,7 +947,7 @@ public class NetworkACLServiceImpl extends ManagerBase implements NetworkACLServ
         String nextAclRuleUuid = moveNetworkAclItemCmd.getNextAclRuleUuid();
         String previousAclRuleUuid = moveNetworkAclItemCmd.getPreviousAclRuleUuid();
 
-        if (StringUtils.isBlank(previousAclRuleUuid) && StringUtils.isBlank(nextAclRuleUuid)) {
+        if (StringUtils.isAllBlank(previousAclRuleUuid, nextAclRuleUuid)) {
             throw new InvalidParameterValueException("Both previous and next ACL rule IDs cannot be blank.");
         }
 
diff --git a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java
index e72922d..5752da2 100644
--- a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java
+++ b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java
@@ -151,7 +151,6 @@ import com.cloud.vm.DomainRouterVO;
 import com.cloud.vm.ReservationContext;
 import com.cloud.vm.ReservationContextImpl;
 import com.cloud.vm.dao.DomainRouterDao;
-import com.google.common.base.Strings;
 
 public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvisioningService, VpcService {
     private static final Logger s_logger = Logger.getLogger(VpcManagerImpl.class);
@@ -713,7 +712,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
             ListIterator<VpcOfferingJoinVO> it = offerings.listIterator();
             while (it.hasNext()) {
                 VpcOfferingJoinVO offering = it.next();
-                if(!Strings.isNullOrEmpty(offering.getDomainId())) {
+                if(org.apache.commons.lang3.StringUtils.isNotEmpty(offering.getDomainId())) {
                     boolean toRemove = true;
                     String[] domainIdsArray = offering.getDomainId().split(",");
                     for (String domainIdString : domainIdsArray) {
diff --git a/server/src/main/java/com/cloud/resource/ResourceManagerImpl.java b/server/src/main/java/com/cloud/resource/ResourceManagerImpl.java
index 31455c0..66413f0 100755
--- a/server/src/main/java/com/cloud/resource/ResourceManagerImpl.java
+++ b/server/src/main/java/com/cloud/resource/ResourceManagerImpl.java
@@ -59,6 +59,7 @@ import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
 import org.apache.cloudstack.utils.identity.ManagementServerNode;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
@@ -165,7 +166,6 @@ import com.cloud.storage.dao.VMTemplateDao;
 import com.cloud.user.Account;
 import com.cloud.user.AccountManager;
 import com.cloud.utils.Pair;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.UriUtils;
 import com.cloud.utils.component.Manager;
 import com.cloud.utils.component.ManagerBase;
@@ -200,7 +200,6 @@ import com.cloud.vm.VirtualMachineProfileImpl;
 import com.cloud.vm.VmDetailConstants;
 import com.cloud.vm.dao.UserVmDetailsDao;
 import com.cloud.vm.dao.VMInstanceDao;
-import com.google.common.base.Strings;
 import com.google.gson.Gson;
 
 @Component
@@ -542,8 +541,8 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
         // save cluster details for later cluster/host cross-checking
         final Map<String, String> details = new HashMap<String, String>();
         details.put("url", url);
-        details.put("username", org.apache.commons.lang3.StringUtils.defaultString(username));
-        details.put("password", org.apache.commons.lang3.StringUtils.defaultString(password));
+        details.put("username", StringUtils.defaultString(username));
+        details.put("password", StringUtils.defaultString(password));
         details.put("cpuOvercommitRatio", CapacityManager.CpuOverprovisioningFactor.value().toString());
         details.put("memoryOvercommitRatio", CapacityManager.MemOverprovisioningFactor.value().toString());
         _clusterDetailsDao.persist(cluster.getId(), details);
@@ -697,7 +696,7 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
         }
         List<String> skipList = Arrays.asList(HypervisorType.VMware.name().toLowerCase(Locale.ROOT), Type.SecondaryStorage.name().toLowerCase(Locale.ROOT));
         if (!skipList.contains(hypervisorType.toLowerCase(Locale.ROOT)) &&
-                (Strings.isNullOrEmpty(username) || Strings.isNullOrEmpty(password))) {
+                (StringUtils.isAnyEmpty(username, password))) {
             throw new InvalidParameterValueException("Username and Password need to be provided.");
         }
 
@@ -1090,7 +1089,7 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
         // Verify cluster information and update the cluster if needed
         boolean doUpdate = false;
 
-        if (org.apache.commons.lang.StringUtils.isNotBlank(name)) {
+        if (StringUtils.isNotBlank(name)) {
             if(cluster.getHypervisorType() == HypervisorType.VMware) {
                 throw new InvalidParameterValueException("Renaming VMware cluster is not supported as it could cause problems if the updated  cluster name is not mapped on VCenter.");
             }
@@ -1495,14 +1494,14 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
     }
 
     protected boolean isMaintenanceLocalStrategyMigrate() {
-        if(org.apache.commons.lang3.StringUtils.isBlank(HOST_MAINTENANCE_LOCAL_STRATEGY.value())) {
+        if(StringUtils.isBlank(HOST_MAINTENANCE_LOCAL_STRATEGY.value())) {
             return false;
         }
         return HOST_MAINTENANCE_LOCAL_STRATEGY.value().toLowerCase().equals(WorkType.Migration.toString().toLowerCase());
     }
 
     protected boolean isMaintenanceLocalStrategyForceStop() {
-        if(org.apache.commons.lang3.StringUtils.isBlank(HOST_MAINTENANCE_LOCAL_STRATEGY.value())) {
+        if(StringUtils.isBlank(HOST_MAINTENANCE_LOCAL_STRATEGY.value())) {
             return false;
         }
         return HOST_MAINTENANCE_LOCAL_STRATEGY.value().toLowerCase().equals(WorkType.ForceStop.toString().toLowerCase());
@@ -1512,7 +1511,7 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
      * Returns true if the host.maintenance.local.storage.strategy is the Default: "Error", blank, empty, or null.
      */
     protected boolean isMaintenanceLocalStrategyDefault() {
-        if (org.apache.commons.lang3.StringUtils.isBlank(HOST_MAINTENANCE_LOCAL_STRATEGY.value().toString())
+        if (StringUtils.isBlank(HOST_MAINTENANCE_LOCAL_STRATEGY.value().toString())
                 || HOST_MAINTENANCE_LOCAL_STRATEGY.value().toLowerCase().equals(State.Error.toString().toLowerCase())) {
             return true;
         }
@@ -1776,7 +1775,7 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
             resourceStateTransitTo(host, resourceEvent, _nodeId);
         }
 
-        if (org.apache.commons.lang.StringUtils.isNotBlank(name)) {
+        if (StringUtils.isNotBlank(name)) {
             s_logger.debug("Updating Host name to: " + name);
             host.setName(name);
             _hostDao.update(host.getId(), host);
@@ -3169,7 +3168,7 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
         if (hostTags == null) {
             return null;
         } else {
-            return StringUtils.listToCsvTags(hostTags);
+            return com.cloud.utils.StringUtils.listToCsvTags(hostTags);
         }
     }
 
diff --git a/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java b/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java
index c00ed1d..33c0c21 100644
--- a/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java
+++ b/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java
@@ -46,7 +46,7 @@ import org.apache.cloudstack.framework.config.ConfigKey;
 import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
 import org.apache.cloudstack.framework.config.impl.ConfigurationVO;
 import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.configuration.Config;
diff --git a/server/src/main/java/com/cloud/server/StatsCollector.java b/server/src/main/java/com/cloud/server/StatsCollector.java
index ce09ed0..c14f88c 100644
--- a/server/src/main/java/com/cloud/server/StatsCollector.java
+++ b/server/src/main/java/com/cloud/server/StatsCollector.java
@@ -50,7 +50,7 @@ import org.apache.cloudstack.utils.graphite.GraphiteException;
 import org.apache.cloudstack.utils.usage.UsageUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.MapUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.BooleanUtils;
 import org.apache.log4j.Logger;
 import org.influxdb.BatchOptions;
@@ -366,12 +366,12 @@ public class StatsCollector extends ManagerBase implements ComponentMethodInterc
 
                 databaseName = configureDatabaseName(uri);
 
-                if (!StringUtils.isEmpty(uri.getPath())) {
+                if (StringUtils.isNotEmpty(uri.getPath())) {
                     externalStatsPrefix = uri.getPath().substring(1);
                 }
 
                 /* Append a dot (.) to the prefix if it is set */
-                if (!StringUtils.isEmpty(externalStatsPrefix)) {
+                if (StringUtils.isNotEmpty(externalStatsPrefix)) {
                     externalStatsPrefix += ".";
                 } else {
                     externalStatsPrefix = "";
diff --git a/server/src/main/java/com/cloud/servlet/ConsoleProxyServlet.java b/server/src/main/java/com/cloud/servlet/ConsoleProxyServlet.java
index b755a84..2350be8 100644
--- a/server/src/main/java/com/cloud/servlet/ConsoleProxyServlet.java
+++ b/server/src/main/java/com/cloud/servlet/ConsoleProxyServlet.java
@@ -43,9 +43,9 @@ import com.cloud.agent.api.GetVmVncTicketAnswer;
 import com.cloud.agent.api.GetVmVncTicketCommand;
 import com.cloud.exception.AgentUnavailableException;
 import com.cloud.exception.OperationTimedoutException;
-import com.cloud.utils.StringUtils;
 import org.apache.cloudstack.framework.security.keys.KeysManager;
 import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 import org.springframework.web.context.support.SpringBeanAutowiringSupport;
diff --git a/server/src/main/java/com/cloud/storage/StorageManagerImpl.java b/server/src/main/java/com/cloud/storage/StorageManagerImpl.java
index c340da2..4b6a55d 100644
--- a/server/src/main/java/com/cloud/storage/StorageManagerImpl.java
+++ b/server/src/main/java/com/cloud/storage/StorageManagerImpl.java
@@ -117,6 +117,7 @@ import org.apache.cloudstack.storage.datastore.db.VolumeDataStoreVO;
 import org.apache.cloudstack.storage.image.datastore.ImageStoreEntity;
 import org.apache.cloudstack.storage.to.VolumeObjectTO;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
@@ -206,7 +207,6 @@ import com.cloud.user.dao.UserDao;
 import com.cloud.utils.DateUtil;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.UriUtils;
 import com.cloud.utils.component.ComponentContext;
 import com.cloud.utils.component.ManagerBase;
@@ -613,7 +613,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
 
     @Override
     public String getStoragePoolTags(long poolId) {
-        return StringUtils.listToCsvTags(getStoragePoolTagList(poolId));
+        return com.cloud.utils.StringUtils.listToCsvTags(getStoragePoolTagList(poolId));
     }
 
     @Override
@@ -725,7 +725,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
      * The name will follow the pattern: <hostname>-local-<firstBlockOfUuid>
      */
     protected String createLocalStoragePoolName(Host host, StoragePoolInfo storagePoolInformation) {
-        return String.format("%s-%s-%s", org.apache.commons.lang3.StringUtils.trim(host.getName()), "local", storagePoolInformation.getUuid().split("-")[0]);
+        return String.format("%s-%s-%s", StringUtils.trim(host.getName()), "local", storagePoolInformation.getUuid().split("-")[0]);
     }
 
     @Override
@@ -889,7 +889,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
         }
 
         String name = cmd.getName();
-        if(org.apache.commons.lang.StringUtils.isNotBlank(name)) {
+        if(StringUtils.isNotBlank(name)) {
             s_logger.debug("Updating Storage Pool name to: " + name);
             pool.setName(name);
             _storagePoolDao.update(pool.getId(), pool);
@@ -1889,7 +1889,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
         dataStoreVO.setParent(datastoreClusterPool.getId());
 
         Map<String, String> details = new HashMap<>();
-        if(org.apache.commons.lang.StringUtils.isNotEmpty(childDataStoreAnswer.getPoolType())) {
+        if(StringUtils.isNotEmpty(childDataStoreAnswer.getPoolType())) {
             details.put("pool_type", childDataStoreAnswer.getPoolType());
         }
         _storagePoolDao.persist(dataStoreVO, details, storageTags);
@@ -2443,7 +2443,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
             } else {
                 storagePolicyId = _diskOfferingDetailsDao.getDetail(volume.getDiskOfferingId(), ApiConstants.STORAGE_POLICY);
             }
-            if (org.apache.commons.lang.StringUtils.isNotEmpty(storagePolicyId)) {
+            if (StringUtils.isNotEmpty(storagePolicyId)) {
                 VsphereStoragePolicyVO storagePolicyVO = _vsphereStoragePolicyDao.findById(Long.parseLong(storagePolicyId));
                 List<Long> hostIds = getUpHostsInPool(pool.getId());
                 Collections.shuffle(hostIds);
diff --git a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java
index d092ad1..345e83f 100644
--- a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java
+++ b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java
@@ -155,7 +155,6 @@ import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
 import com.cloud.utils.Predicate;
 import com.cloud.utils.ReflectionUse;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.UriUtils;
 import com.cloud.utils.component.ManagerBase;
 import com.cloud.utils.db.DB;
@@ -194,7 +193,7 @@ import com.cloud.vm.dao.UserVmDetailsDao;
 import com.cloud.vm.dao.VMInstanceDao;
 import com.cloud.vm.snapshot.VMSnapshotVO;
 import com.cloud.vm.snapshot.dao.VMSnapshotDao;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.google.gson.JsonParseException;
@@ -556,7 +555,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
     public String getVolumeNameFromCommand(CreateVolumeCmd cmd) {
         String userSpecifiedName = cmd.getVolumeName();
 
-        if (org.apache.commons.lang.StringUtils.isBlank(userSpecifiedName)) {
+        if (StringUtils.isBlank(userSpecifiedName)) {
             userSpecifiedName = getRandomVolumeName();
         }
 
@@ -1030,7 +1029,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
             }
 
             if (diskOffering.getTags() != null) {
-                if (!StringUtils.areTagsEqual(diskOffering.getTags(), newDiskOffering.getTags())) {
+                if (!com.cloud.utils.StringUtils.areTagsEqual(diskOffering.getTags(), newDiskOffering.getTags())) {
                     throw new InvalidParameterValueException("The tags on the new and old disk offerings must match.");
                 }
             } else if (newDiskOffering.getTags() != null) {
@@ -2245,7 +2244,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
     }
 
     public void updateMissingRootDiskController(final VMInstanceVO vm, final String rootVolChainInfo) {
-        if (vm == null || !VirtualMachine.Type.User.equals(vm.getType()) || Strings.isNullOrEmpty(rootVolChainInfo)) {
+        if (vm == null || !VirtualMachine.Type.User.equals(vm.getType()) || StringUtils.isEmpty(rootVolChainInfo)) {
             return;
         }
         String rootDiskController = null;
@@ -2519,7 +2518,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
      */
     private DiskOfferingVO retrieveAndValidateNewDiskOffering(MigrateVolumeCmd cmd) {
         String newDiskOfferingUuid = cmd.getNewDiskOfferingUuid();
-        if (org.apache.commons.lang.StringUtils.isBlank(newDiskOfferingUuid)) {
+        if (StringUtils.isBlank(newDiskOfferingUuid)) {
             return null;
         }
         DiskOfferingVO newDiskOffering = _diskOfferingDao.findByUuid(newDiskOfferingUuid);
@@ -2609,15 +2608,15 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
 
     @Override
     public boolean doesTargetStorageSupportDiskOffering(StoragePool destPool, String diskOfferingTags) {
-        if (org.apache.commons.lang.StringUtils.isBlank(diskOfferingTags)) {
+        if (StringUtils.isBlank(diskOfferingTags)) {
             return true;
         }
         String storagePoolTags = getStoragePoolTags(destPool);
-        if (org.apache.commons.lang.StringUtils.isBlank(storagePoolTags)) {
+        if (StringUtils.isBlank(storagePoolTags)) {
             return false;
         }
-        String[] storageTagsAsStringArray = org.apache.commons.lang.StringUtils.split(storagePoolTags, ",");
-        String[] newDiskOfferingTagsAsStringArray = org.apache.commons.lang.StringUtils.split(diskOfferingTags, ",");
+        String[] storageTagsAsStringArray = StringUtils.split(storagePoolTags, ",");
+        String[] newDiskOfferingTagsAsStringArray = StringUtils.split(diskOfferingTags, ",");
 
         return CollectionUtils.isSubCollection(Arrays.asList(newDiskOfferingTagsAsStringArray), Arrays.asList(storageTagsAsStringArray));
     }
@@ -3450,7 +3449,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
         if (host != null) {
             _hostDao.loadDetails(host);
             String hypervisorVersion = host.getDetail("product_version");
-            if (org.apache.commons.lang.StringUtils.isBlank(hypervisorVersion)) {
+            if (StringUtils.isBlank(hypervisorVersion)) {
                 hypervisorVersion = host.getHypervisorVersion();
             }
             maxDataVolumesSupported = _hypervisorCapabilitiesDao.getMaxDataVolumesLimit(host.getHypervisorType(), hypervisorVersion);
diff --git a/server/src/main/java/com/cloud/tags/ResourceManagerUtilImpl.java b/server/src/main/java/com/cloud/tags/ResourceManagerUtilImpl.java
index e088b26..bd32478 100644
--- a/server/src/main/java/com/cloud/tags/ResourceManagerUtilImpl.java
+++ b/server/src/main/java/com/cloud/tags/ResourceManagerUtilImpl.java
@@ -66,7 +66,7 @@ import org.apache.cloudstack.api.Identity;
 import org.apache.cloudstack.api.InternalIdentity;
 import org.apache.cloudstack.context.CallContext;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 import javax.inject.Inject;
 import java.util.HashMap;
diff --git a/server/src/main/java/com/cloud/test/TestAppender.java b/server/src/main/java/com/cloud/test/TestAppender.java
index 539cac1..52ddec2 100644
--- a/server/src/main/java/com/cloud/test/TestAppender.java
+++ b/server/src/main/java/com/cloud/test/TestAppender.java
@@ -21,6 +21,8 @@ package com.cloud.test;
 import com.google.common.base.Joiner;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableMap;
+
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.AppenderSkeleton;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
@@ -37,7 +39,6 @@ import java.util.regex.Pattern;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkState;
-import static com.google.common.base.Strings.isNullOrEmpty;
 import static java.lang.String.format;
 import static org.apache.log4j.Level.ALL;
 import static org.apache.log4j.Level.DEBUG;
@@ -154,7 +155,7 @@ public final class TestAppender extends AppenderSkeleton {
         }
         public TestAppenderBuilder addExpectedPattern(final Level level, final String pattern) {
             checkArgument(level != null, "addExpectedPattern requires a non-null level");
-            checkArgument(!isNullOrEmpty(pattern), "addExpectedPattern requires a non-blank pattern");
+            checkArgument(StringUtils.isNotEmpty(pattern), "addExpectedPattern requires a non-blank pattern");
             checkState(expectedPatterns.containsKey(level), "level " + level + " is not supported by " + getClass().getName());
             expectedPatterns.get(level).add(new PatternResult(Pattern.compile(pattern)));
             return this;
diff --git a/server/src/main/java/com/cloud/user/DomainManagerImpl.java b/server/src/main/java/com/cloud/user/DomainManagerImpl.java
index f6569a0..8624d27 100644
--- a/server/src/main/java/com/cloud/user/DomainManagerImpl.java
+++ b/server/src/main/java/com/cloud/user/DomainManagerImpl.java
@@ -85,7 +85,7 @@ import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.net.NetUtils;
 import com.cloud.vm.ReservationContext;
 import com.cloud.vm.ReservationContextImpl;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 @Component
 public class DomainManagerImpl extends ManagerBase implements DomainManager, DomainService {
@@ -257,7 +257,7 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom
     public Domain findDomainByIdOrPath(final Long id, final String domainPath) {
         Long domainId = id;
         if (domainId == null || domainId < 1L) {
-            if (Strings.isNullOrEmpty(domainPath) || domainPath.trim().isEmpty()) {
+            if (StringUtils.isBlank(domainPath)) {
                 domainId = Domain.ROOT_DOMAIN;
             } else {
                 final Domain domainVO = findDomainByPath(domainPath.trim());
diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
index d7c90b3..da6b55b 100644
--- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
@@ -7648,7 +7648,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
     @Override
     public void persistDeviceBusInfo(UserVmVO vm, String rootDiskController) {
         String existingVmRootDiskController = vm.getDetail(VmDetailConstants.ROOT_DISK_CONTROLLER);
-        if (StringUtils.isEmpty(existingVmRootDiskController) && !StringUtils.isEmpty(rootDiskController)) {
+        if (StringUtils.isEmpty(existingVmRootDiskController) && StringUtils.isNotEmpty(rootDiskController)) {
             vm.setDetail(VmDetailConstants.ROOT_DISK_CONTROLLER, rootDiskController);
             _vmDao.saveDetails(vm);
             if (s_logger.isDebugEnabled()) {
diff --git a/server/src/main/java/org/apache/cloudstack/acl/ProjectRoleManagerImpl.java b/server/src/main/java/org/apache/cloudstack/acl/ProjectRoleManagerImpl.java
index 90d8e1e..6daae8d 100644
--- a/server/src/main/java/org/apache/cloudstack/acl/ProjectRoleManagerImpl.java
+++ b/server/src/main/java/org/apache/cloudstack/acl/ProjectRoleManagerImpl.java
@@ -56,7 +56,6 @@ import com.cloud.utils.db.Transaction;
 import com.cloud.utils.db.TransactionCallback;
 import com.cloud.utils.db.TransactionStatus;
 import com.cloud.utils.exception.CloudRuntimeException;
-import com.google.common.base.Strings;
 
 public class ProjectRoleManagerImpl extends ManagerBase implements ProjectRoleService, PluggableService {
     @Inject
@@ -130,10 +129,10 @@ public class ProjectRoleManagerImpl extends ManagerBase implements ProjectRoleSe
     public ProjectRole updateProjectRole(ProjectRole role, Long projectId, String name, String description) {
         checkAccess(projectId);
         ProjectRoleVO projectRoleVO = (ProjectRoleVO) role;
-        if (!Strings.isNullOrEmpty(name)) {
+        if (StringUtils.isNotEmpty(name)) {
             projectRoleVO.setName(name);
         }
-        if (!Strings.isNullOrEmpty(description)) {
+        if (StringUtils.isNotEmpty(description)) {
             projectRoleVO.setDescription(description);
         }
         projRoleDao.update(role.getId(), projectRoleVO);
diff --git a/server/src/main/java/org/apache/cloudstack/acl/RoleManagerImpl.java b/server/src/main/java/org/apache/cloudstack/acl/RoleManagerImpl.java
index dce518c..dff79b1 100644
--- a/server/src/main/java/org/apache/cloudstack/acl/RoleManagerImpl.java
+++ b/server/src/main/java/org/apache/cloudstack/acl/RoleManagerImpl.java
@@ -61,7 +61,6 @@ import com.cloud.utils.db.Transaction;
 import com.cloud.utils.db.TransactionCallback;
 import com.cloud.utils.db.TransactionStatus;
 import com.cloud.utils.exception.CloudRuntimeException;
-import com.google.common.base.Strings;
 
 public class RoleManagerImpl extends ManagerBase implements RoleService, Configurable, PluggableService {
 
@@ -132,7 +131,7 @@ public class RoleManagerImpl extends ManagerBase implements RoleService, Configu
 
     @Override
     public RolePermission findRolePermissionByRoleIdAndRule(final Long roleId, final String rule) {
-        if (roleId == null || Strings.isNullOrEmpty(rule)) {
+        if (roleId == null || StringUtils.isEmpty(rule)) {
             return null;
         }
 
@@ -182,7 +181,7 @@ public class RoleManagerImpl extends ManagerBase implements RoleService, Configu
     @ActionEvent(eventType = EventTypes.EVENT_ROLE_IMPORT, eventDescription = "importing Role")
     public Role importRole(String name, RoleType type, String description, List<Map<String, Object>> rules, boolean forced) {
         checkCallerAccess();
-        if (Strings.isNullOrEmpty(name)) {
+        if (StringUtils.isEmpty(name)) {
             throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Invalid role name provided");
         }
         if (type == null || type == RoleType.Unknown) {
@@ -252,7 +251,7 @@ public class RoleManagerImpl extends ManagerBase implements RoleService, Configu
             throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Unknown is not a valid role type");
         }
         RoleVO roleVO = (RoleVO)role;
-        if (!Strings.isNullOrEmpty(name)) {
+        if (StringUtils.isNotEmpty(name)) {
             roleVO.setName(name);
         }
         if (roleType != null) {
@@ -263,7 +262,7 @@ public class RoleManagerImpl extends ManagerBase implements RoleService, Configu
                 throw new PermissionDeniedException("Found accounts that have role in use, won't allow to change role type");
             }
         }
-        if (!Strings.isNullOrEmpty(description)) {
+        if (StringUtils.isNotEmpty(description)) {
             roleVO.setDescription(description);
         }
 
@@ -440,7 +439,7 @@ public class RoleManagerImpl extends ManagerBase implements RoleService, Configu
 
     @Override
     public Permission getRolePermission(String permission) {
-        if (Strings.isNullOrEmpty(permission)) {
+        if (StringUtils.isEmpty(permission)) {
             return null;
         }
         if (!permission.equalsIgnoreCase(RolePermission.Permission.ALLOW.toString()) &&
diff --git a/server/src/main/java/org/apache/cloudstack/agent/lb/IndirectAgentLBServiceImpl.java b/server/src/main/java/org/apache/cloudstack/agent/lb/IndirectAgentLBServiceImpl.java
index 003664c..b93f2b3 100644
--- a/server/src/main/java/org/apache/cloudstack/agent/lb/IndirectAgentLBServiceImpl.java
+++ b/server/src/main/java/org/apache/cloudstack/agent/lb/IndirectAgentLBServiceImpl.java
@@ -45,7 +45,7 @@ import com.cloud.hypervisor.Hypervisor;
 import com.cloud.resource.ResourceState;
 import com.cloud.utils.component.ComponentLifecycleBase;
 import com.cloud.utils.exception.CloudRuntimeException;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public class IndirectAgentLBServiceImpl extends ComponentLifecycleBase implements IndirectAgentLB, Configurable {
     public static final Logger LOG = Logger.getLogger(IndirectAgentLBServiceImpl.class);
@@ -74,7 +74,7 @@ public class IndirectAgentLBServiceImpl extends ComponentLifecycleBase implement
     @Override
     public List<String> getManagementServerList(final Long hostId, final Long dcId, final List<Long> orderedHostIdList) {
         final String msServerAddresses = ApiServiceConfiguration.ManagementServerAddresses.value();
-        if (Strings.isNullOrEmpty(msServerAddresses)) {
+        if (StringUtils.isEmpty(msServerAddresses)) {
             throw new CloudRuntimeException(String.format("No management server addresses are defined in '%s' setting",
                     ApiServiceConfiguration.ManagementServerAddresses.key()));
         }
diff --git a/server/src/main/java/org/apache/cloudstack/annotation/AnnotationManagerImpl.java b/server/src/main/java/org/apache/cloudstack/annotation/AnnotationManagerImpl.java
index c151b5c..e28f2f7 100644
--- a/server/src/main/java/org/apache/cloudstack/annotation/AnnotationManagerImpl.java
+++ b/server/src/main/java/org/apache/cloudstack/annotation/AnnotationManagerImpl.java
@@ -60,7 +60,6 @@ import com.cloud.user.dao.AccountDao;
 import com.cloud.user.dao.SSHKeyPairDao;
 import com.cloud.user.dao.UserDao;
 import com.cloud.utils.Pair;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.component.ManagerBase;
 import com.cloud.utils.component.PluggableService;
 import com.cloud.utils.exception.CloudRuntimeException;
@@ -86,11 +85,9 @@ import org.apache.cloudstack.storage.datastore.db.ImageStoreDao;
 import org.apache.cloudstack.storage.datastore.db.ImageStoreVO;
 import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
-import static org.apache.commons.lang.StringUtils.isBlank;
-import static org.apache.commons.lang.StringUtils.isNotBlank;
-
 /**
  * @since 4.11
  */
@@ -296,7 +293,7 @@ public final class AnnotationManagerImpl extends ManagerBase implements Annotati
         String userUuid = cmd.getUserUuid();
         String entityUuid = cmd.getEntityUuid();
         String entityType = cmd.getEntityType();
-        String annotationFilter = isNotBlank(cmd.getAnnotationFilter()) ? cmd.getAnnotationFilter() : "all";
+        String annotationFilter = StringUtils.isNotBlank(cmd.getAnnotationFilter()) ? cmd.getAnnotationFilter() : "all";
         boolean isCallerAdmin = isCallingUserRole(RoleType.Admin);
         UserVO callingUser = getCallingUserFromContext();
         String callingUserUuid = callingUser.getUuid();
@@ -304,16 +301,16 @@ public final class AnnotationManagerImpl extends ManagerBase implements Annotati
 
         if (cmd.getUuid() != null) {
             annotations = getSingleAnnotationListByUuid(cmd.getUuid(), userUuid, annotationFilter, callingUserUuid, isCallerAdmin);
-        } else if (isNotBlank(entityType)) {
+        } else if (StringUtils.isNotBlank(entityType)) {
             annotations = getAnnotationsForSpecificEntityType(entityType, entityUuid, userUuid, isCallerAdmin,
                     annotationFilter, callingUserUuid, keyword, callingUser);
-        } else if (isNotBlank(entityUuid)) {
+        } else if (StringUtils.isNotBlank(entityUuid)) {
             annotations = getAnnotationsForSpecificEntityId(entityUuid, userUuid, isCallerAdmin,
                     annotationFilter, callingUserUuid, keyword, callingUser);
         } else {
             annotations = getAllAnnotations(annotationFilter, userUuid, callingUserUuid, isCallerAdmin, keyword);
         }
-        List<AnnotationVO> paginated = StringUtils.applyPagination(annotations, cmd.getStartIndex(), cmd.getPageSizeVal());
+        List<AnnotationVO> paginated = com.cloud.utils.StringUtils.applyPagination(annotations, cmd.getStartIndex(), cmd.getPageSizeVal());
         return (paginated != null) ? new Pair<>(paginated, annotations.size()) :
                 new Pair<>(annotations, annotations.size());
     }
@@ -323,7 +320,7 @@ public final class AnnotationManagerImpl extends ManagerBase implements Annotati
         if(LOGGER.isDebugEnabled()) {
             LOGGER.debug("getting all annotations");
         }
-        if ("self".equalsIgnoreCase(annotationFilter) && isBlank(userUuid)) {
+        if ("self".equalsIgnoreCase(annotationFilter) && StringUtils.isBlank(userUuid)) {
             userUuid = callingUserUuid;
         }
         List<AnnotationVO> annotations = annotationDao.listAllAnnotations(userUuid, getCallingUserRole(),
@@ -359,10 +356,10 @@ public final class AnnotationManagerImpl extends ManagerBase implements Annotati
         if (LOGGER.isDebugEnabled()) {
             LOGGER.debug("getting annotations for type: " + entityType);
         }
-        if ("self".equalsIgnoreCase(annotationFilter) && isBlank(userUuid)) {
+        if ("self".equalsIgnoreCase(annotationFilter) && StringUtils.isBlank(userUuid)) {
             userUuid = callingUserUuid;
         }
-        if (isNotBlank(entityUuid)) {
+        if (StringUtils.isNotBlank(entityUuid)) {
             return getAnnotationsByEntityIdAndType(entityType, entityUuid, userUuid, isCallerAdmin,
                     annotationFilter, callingUserUuid, keyword, callingUser);
         } else {
diff --git a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java
index 0ef2ada..ed1f54e 100644
--- a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java
+++ b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java
@@ -110,7 +110,7 @@ import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.vm.VMInstanceVO;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.dao.VMInstanceDao;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import com.google.gson.Gson;
 
 public class BackupManagerImpl extends ManagerBase implements BackupManager {
@@ -586,7 +586,7 @@ public class BackupManagerImpl extends ManagerBase implements BackupManager {
     @Override
     @ActionEvent(eventType = EventTypes.EVENT_VM_BACKUP_RESTORE, eventDescription = "restoring VM from backup", async = true)
     public boolean restoreBackupVolumeAndAttachToVM(final String backedUpVolumeUuid, final Long backupId, final Long vmId) throws Exception {
-        if (Strings.isNullOrEmpty(backedUpVolumeUuid)) {
+        if (StringUtils.isEmpty(backedUpVolumeUuid)) {
             throw new CloudRuntimeException("Invalid volume ID passed");
         }
         final BackupVO backup = backupDao.findById(backupId);
@@ -747,7 +747,7 @@ public class BackupManagerImpl extends ManagerBase implements BackupManager {
     }
 
     public BackupProvider getBackupProvider(final String name) {
-        if (Strings.isNullOrEmpty(name)) {
+        if (StringUtils.isEmpty(name)) {
             throw new CloudRuntimeException("Invalid backup provider name provided");
         }
         if (!backupProvidersMap.containsKey(name)) {
diff --git a/server/src/main/java/org/apache/cloudstack/ca/CAManagerImpl.java b/server/src/main/java/org/apache/cloudstack/ca/CAManagerImpl.java
index 0487735..1e5d812 100644
--- a/server/src/main/java/org/apache/cloudstack/ca/CAManagerImpl.java
+++ b/server/src/main/java/org/apache/cloudstack/ca/CAManagerImpl.java
@@ -72,7 +72,7 @@ import com.cloud.host.Status;
 import com.cloud.host.dao.HostDao;
 import com.cloud.utils.component.ManagerBase;
 import com.cloud.utils.exception.CloudRuntimeException;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public class CAManagerImpl extends ManagerBase implements CAManager {
     public static final Logger LOG = Logger.getLogger(CAManagerImpl.class);
@@ -107,7 +107,7 @@ public class CAManagerImpl extends ManagerBase implements CAManager {
     }
 
     private CAProvider getCAProvider(final String provider) {
-        if (Strings.isNullOrEmpty(provider)) {
+        if (StringUtils.isEmpty(provider)) {
             return getConfiguredCaProvider();
         }
         final String caProviderName = provider.toLowerCase();
@@ -155,7 +155,7 @@ public class CAManagerImpl extends ManagerBase implements CAManager {
         if (validityDuration != null) {
             validity = validityDuration;
         }
-        if (Strings.isNullOrEmpty(csr)) {
+        if (StringUtils.isEmpty(csr)) {
             if (domainNames == null || domainNames.isEmpty()) {
                 throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "No domains or CSR provided");
             }
@@ -187,7 +187,7 @@ public class CAManagerImpl extends ManagerBase implements CAManager {
         final String csr;
         try {
             csr = generateKeyStoreAndCsr(host, null);
-            if (Strings.isNullOrEmpty(csr)) {
+            if (StringUtils.isEmpty(csr)) {
                 return false;
             }
             final Certificate certificate = issueCertificate(csr, Arrays.asList(host.getName(), host.getPrivateIpAddress()), Arrays.asList(host.getPrivateIpAddress(), host.getPublicIpAddress(), host.getStorageIpAddress()), CAManager.CertValidityPeriod.value(), caProvider);
@@ -247,10 +247,10 @@ public class CAManagerImpl extends ManagerBase implements CAManager {
         final String privateAddress = host.getPrivateIpAddress();
         final String publicAddress = host.getPublicIpAddress();
         final Map<String, X509Certificate> activeCertsMap = getActiveCertificatesMap();
-        if (!Strings.isNullOrEmpty(privateAddress) && activeCertsMap.containsKey(privateAddress)) {
+        if (StringUtils.isNotEmpty(privateAddress) && activeCertsMap.containsKey(privateAddress)) {
             activeCertsMap.remove(privateAddress);
         }
-        if (!Strings.isNullOrEmpty(publicAddress) && activeCertsMap.containsKey(publicAddress)) {
+        if (StringUtils.isNotEmpty(publicAddress) && activeCertsMap.containsKey(publicAddress)) {
             activeCertsMap.remove(publicAddress);
         }
     }
@@ -268,7 +268,7 @@ public class CAManagerImpl extends ManagerBase implements CAManager {
         if (sslContext == null) {
             throw new CloudRuntimeException("SSLContext provided to create SSLEngine is null, aborting");
         }
-        if (Strings.isNullOrEmpty(remoteAddress)) {
+        if (StringUtils.isEmpty(remoteAddress)) {
             throw new CloudRuntimeException("Remote client address connecting to mgmt server cannot be empty/null");
         }
         return getConfiguredCaProvider().createSSLEngine(sslContext, remoteAddress, getActiveCertificatesMap());
diff --git a/server/src/main/java/org/apache/cloudstack/diagnostics/DiagnosticsServiceImpl.java b/server/src/main/java/org/apache/cloudstack/diagnostics/DiagnosticsServiceImpl.java
index de370b3..01e7c56 100644
--- a/server/src/main/java/org/apache/cloudstack/diagnostics/DiagnosticsServiceImpl.java
+++ b/server/src/main/java/org/apache/cloudstack/diagnostics/DiagnosticsServiceImpl.java
@@ -74,7 +74,6 @@ import com.cloud.vm.VMInstanceVO;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachineManager;
 import com.cloud.vm.dao.VMInstanceDao;
-import com.google.common.base.Strings;
 
 public class DiagnosticsServiceImpl extends ManagerBase implements PluggableService, DiagnosticsService, Configurable {
     private static final Logger LOGGER = Logger.getLogger(DiagnosticsServiceImpl.class);
@@ -141,7 +140,7 @@ public class DiagnosticsServiceImpl extends ManagerBase implements PluggableServ
 
         final String shellCmd = prepareShellCmd(cmdType, ipAddress, optionalArguments);
 
-        if (Strings.isNullOrEmpty(shellCmd)) {
+        if (StringUtils.isEmpty(shellCmd)) {
             throw new IllegalArgumentException("Optional parameters contain unwanted characters: " + optionalArguments);
         }
 
@@ -150,7 +149,7 @@ public class DiagnosticsServiceImpl extends ManagerBase implements PluggableServ
         final DiagnosticsCommand command = new DiagnosticsCommand(shellCmd, vmManager.getExecuteInSequence(hypervisorType));
         final Map<String, String> accessDetails = networkManager.getSystemVMAccessDetails(vmInstance);
 
-        if (Strings.isNullOrEmpty(accessDetails.get(NetworkElementCommand.ROUTER_IP))) {
+        if (StringUtils.isEmpty(accessDetails.get(NetworkElementCommand.ROUTER_IP))) {
             throw new CloudRuntimeException("Unable to set system vm ControlIP for system vm with ID: " + vmId);
         }
 
@@ -169,7 +168,7 @@ public class DiagnosticsServiceImpl extends ManagerBase implements PluggableServ
     }
 
     protected boolean hasValidChars(String optionalArgs) {
-        if (Strings.isNullOrEmpty(optionalArgs)) {
+        if (StringUtils.isEmpty(optionalArgs)) {
             return true;
         } else {
             final String regex = "^[\\w\\-\\s.]+$";
@@ -180,7 +179,7 @@ public class DiagnosticsServiceImpl extends ManagerBase implements PluggableServ
 
     protected String prepareShellCmd(String cmdType, String ipAddress, String optionalParams) {
         final String CMD_TEMPLATE = String.format("%s %s", cmdType, ipAddress);
-        if (Strings.isNullOrEmpty(optionalParams)) {
+        if (StringUtils.isEmpty(optionalParams)) {
             return CMD_TEMPLATE;
         } else {
             if (hasValidChars(optionalParams)) {
diff --git a/server/src/main/java/org/apache/cloudstack/ha/HAManagerImpl.java b/server/src/main/java/org/apache/cloudstack/ha/HAManagerImpl.java
index 947e452..5ee837b 100644
--- a/server/src/main/java/org/apache/cloudstack/ha/HAManagerImpl.java
+++ b/server/src/main/java/org/apache/cloudstack/ha/HAManagerImpl.java
@@ -86,7 +86,7 @@ import com.cloud.utils.fsm.NoTransitionException;
 import com.cloud.utils.fsm.StateListener;
 import com.cloud.utils.fsm.StateMachine2;
 import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public final class HAManagerImpl extends ManagerBase implements HAManager, ClusterManagerListener, PluggableService, Configurable, StateListener<HAConfig.HAState, HAConfig.Event, HAConfig> {
     public static final Logger LOG = Logger.getLogger(HAManagerImpl.class);
@@ -244,7 +244,7 @@ public final class HAManagerImpl extends ManagerBase implements HAManager, Clust
             return true;
         }
         final DataCenterDetailVO zoneDetails = dataCenterDetailsDao.findDetail(resource.getDataCenterId(), HA_ENABLED_DETAIL);
-        return zoneDetails == null || Strings.isNullOrEmpty(zoneDetails.getValue()) || Boolean.valueOf(zoneDetails.getValue());
+        return zoneDetails == null || StringUtils.isEmpty(zoneDetails.getValue()) || Boolean.valueOf(zoneDetails.getValue());
     }
 
     private boolean isHAEnabledForCluster(final HAResource resource) {
@@ -252,7 +252,7 @@ public final class HAManagerImpl extends ManagerBase implements HAManager, Clust
             return true;
         }
         final ClusterDetailsVO clusterDetails = clusterDetailsDao.findDetail(resource.getClusterId(), HA_ENABLED_DETAIL);
-        return clusterDetails == null || Strings.isNullOrEmpty(clusterDetails.getValue()) || Boolean.valueOf(clusterDetails.getValue());
+        return clusterDetails == null || StringUtils.isEmpty(clusterDetails.getValue()) || Boolean.valueOf(clusterDetails.getValue());
     }
 
     private boolean isHAEligibleForResource(final HAResource resource) {
@@ -352,7 +352,7 @@ public final class HAManagerImpl extends ManagerBase implements HAManager, Clust
                     }
                     haConfig.setResourceId(resourceId);
                     haConfig.setResourceType(resourceType);
-                    if (Strings.isNullOrEmpty(haConfig.getHaProvider())) {
+                    if (StringUtils.isEmpty(haConfig.getHaProvider())) {
                         throw new ServerApiException(ApiErrorCode.PARAM_ERROR, String.format("HAProvider is not provided for the resource [%s], failing configuration.", resourceId));
                     }
                     if (haConfigDao.persist(haConfig) != null) {
@@ -365,7 +365,7 @@ public final class HAManagerImpl extends ManagerBase implements HAManager, Clust
                     if (haProvider != null) {
                         haConfig.setHaProvider(haProvider);
                     }
-                    if (Strings.isNullOrEmpty(haConfig.getHaProvider())) {
+                    if (StringUtils.isEmpty(haConfig.getHaProvider())) {
                         throw new ServerApiException(ApiErrorCode.PARAM_ERROR, String.format("HAProvider is not provided for the resource [%s], failing configuration.", resourceId));
                     }
                     return haConfigDao.update(haConfig.getId(), haConfig);
@@ -380,7 +380,7 @@ public final class HAManagerImpl extends ManagerBase implements HAManager, Clust
     public boolean configureHA(final Long resourceId, final HAResource.ResourceType resourceType, final String haProvider) {
         Preconditions.checkArgument(resourceId != null && resourceId > 0L);
         Preconditions.checkArgument(resourceType != null);
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(haProvider));
+        Preconditions.checkArgument(StringUtils.isNotEmpty(haProvider));
 
         if (!haProviderMap.containsKey(haProvider.toLowerCase())) {
             throw new CloudRuntimeException(String.format("Given HA provider [%s] does not exist.", haProvider));
diff --git a/server/src/main/java/org/apache/cloudstack/network/ssl/CertServiceImpl.java b/server/src/main/java/org/apache/cloudstack/network/ssl/CertServiceImpl.java
index 00ea94a..e477239 100644
--- a/server/src/main/java/org/apache/cloudstack/network/ssl/CertServiceImpl.java
+++ b/server/src/main/java/org/apache/cloudstack/network/ssl/CertServiceImpl.java
@@ -88,7 +88,7 @@ import com.cloud.utils.db.EntityManager;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.security.CertificateHelper;
 import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public class CertServiceImpl implements CertService {
 
@@ -134,7 +134,7 @@ public class CertServiceImpl implements CertService {
         final Account caller = ctx.getCallingAccount();
 
         Account owner = null;
-        if (!Strings.isNullOrEmpty(certCmd.getAccountName()) && certCmd.getDomainId() != null || certCmd.getProjectId() != null) {
+        if (StringUtils.isNotEmpty(certCmd.getAccountName()) && certCmd.getDomainId() != null || certCmd.getProjectId() != null) {
             owner = _accountMgr.finalizeOwner(caller, certCmd.getAccountName(), certCmd.getDomainId(), certCmd.getProjectId());
         } else {
             owner = caller;
@@ -423,7 +423,7 @@ public class CertServiceImpl implements CertService {
     }
 
     public PrivateKey parsePrivateKey(final String key) throws IOException {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(key));
+        Preconditions.checkArgument(StringUtils.isNotEmpty(key));
         try (final PemReader pemReader = new PemReader(new StringReader(key));) {
             final PemObject pemObject = pemReader.readPemObject();
             final byte[] content = pemObject.getContent();
@@ -439,7 +439,7 @@ public class CertServiceImpl implements CertService {
 
     @Override
     public Certificate parseCertificate(final String cert) {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(cert));
+        Preconditions.checkArgument(StringUtils.isNotEmpty(cert));
         final PemReader certPem = new PemReader(new StringReader(cert));
         try {
             return readCertificateFromPemObject(certPem.readPemObject());
diff --git a/server/src/main/java/org/apache/cloudstack/outofbandmanagement/OutOfBandManagementServiceImpl.java b/server/src/main/java/org/apache/cloudstack/outofbandmanagement/OutOfBandManagementServiceImpl.java
index e4e221d..855ca81 100644
--- a/server/src/main/java/org/apache/cloudstack/outofbandmanagement/OutOfBandManagementServiceImpl.java
+++ b/server/src/main/java/org/apache/cloudstack/outofbandmanagement/OutOfBandManagementServiceImpl.java
@@ -37,7 +37,7 @@ import com.cloud.utils.db.TransactionCallback;
 import com.cloud.utils.db.TransactionStatus;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.fsm.NoTransitionException;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import com.google.common.cache.Cache;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.collect.ImmutableMap;
@@ -110,7 +110,7 @@ public class OutOfBandManagementServiceImpl extends ManagerBase implements OutOf
     }
 
     private OutOfBandManagementDriver getDriver(final OutOfBandManagement outOfBandManagementConfig) {
-        if (!Strings.isNullOrEmpty(outOfBandManagementConfig.getDriver())) {
+        if (StringUtils.isNotEmpty(outOfBandManagementConfig.getDriver())) {
             final OutOfBandManagementDriver driver = outOfBandManagementDriversMap.get(outOfBandManagementConfig.getDriver());
             if (driver != null) {
                 return driver;
@@ -128,7 +128,7 @@ public class OutOfBandManagementServiceImpl extends ManagerBase implements OutOf
         }
         for (OutOfBandManagement.Option option: options.keySet()) {
             final String value = options.get(option);
-            if (Strings.isNullOrEmpty(value)) {
+            if (StringUtils.isEmpty(value)) {
                 continue;
             }
             switch (option) {
@@ -228,7 +228,7 @@ public class OutOfBandManagementServiceImpl extends ManagerBase implements OutOf
             return true;
         }
         final DataCenterDetailVO zoneDetails = dataCenterDetailsDao.findDetail(zoneId, OOBM_ENABLED_DETAIL);
-        if (zoneDetails != null && !Strings.isNullOrEmpty(zoneDetails.getValue()) && !Boolean.valueOf(zoneDetails.getValue())) {
+        if (zoneDetails != null && StringUtils.isNotEmpty(zoneDetails.getValue()) && !Boolean.valueOf(zoneDetails.getValue())) {
             return false;
         }
         return true;
@@ -239,7 +239,7 @@ public class OutOfBandManagementServiceImpl extends ManagerBase implements OutOf
             return true;
         }
         final ClusterDetailsVO clusterDetails = clusterDetailsDao.findDetail(clusterId, OOBM_ENABLED_DETAIL);
-        if (clusterDetails != null && !Strings.isNullOrEmpty(clusterDetails.getValue()) && !Boolean.valueOf(clusterDetails.getValue())) {
+        if (clusterDetails != null && StringUtils.isNotEmpty(clusterDetails.getValue()) && !Boolean.valueOf(clusterDetails.getValue())) {
             return false;
         }
         return true;
@@ -376,7 +376,7 @@ public class OutOfBandManagementServiceImpl extends ManagerBase implements OutOf
             outOfBandManagementConfig = outOfBandManagementDao.persist(new OutOfBandManagementVO(host.getId()));
         }
         outOfBandManagementConfig = updateConfig(outOfBandManagementConfig, options);
-        if (Strings.isNullOrEmpty(outOfBandManagementConfig.getDriver()) || !outOfBandManagementDriversMap.containsKey(outOfBandManagementConfig.getDriver().toLowerCase())) {
+        if (StringUtils.isEmpty(outOfBandManagementConfig.getDriver()) || !outOfBandManagementDriversMap.containsKey(outOfBandManagementConfig.getDriver().toLowerCase())) {
             throw new CloudRuntimeException("Out-of-band management driver is not available. Please provide a valid driver name.");
         }
 
@@ -445,13 +445,13 @@ public class OutOfBandManagementServiceImpl extends ManagerBase implements OutOf
     @ActionEvent(eventType = EventTypes.EVENT_HOST_OUTOFBAND_MANAGEMENT_CHANGE_PASSWORD, eventDescription = "updating out-of-band management password")
     public OutOfBandManagementResponse changePassword(final Host host, final String newPassword) {
         checkOutOfBandManagementEnabledByZoneClusterHost(host);
-        if (Strings.isNullOrEmpty(newPassword)) {
+        if (StringUtils.isEmpty(newPassword)) {
             throw new CloudRuntimeException(String.format("Cannot change out-of-band management password as provided new-password is null or empty for %s.", host));
         }
 
         final OutOfBandManagement outOfBandManagementConfig = outOfBandManagementDao.findByHost(host.getId());
         final ImmutableMap<OutOfBandManagement.Option, String> options = getOptions(outOfBandManagementConfig);
-        if (!(options.containsKey(OutOfBandManagement.Option.PASSWORD) && !Strings.isNullOrEmpty(options.get(OutOfBandManagement.Option.PASSWORD)))) {
+        if (!(options.containsKey(OutOfBandManagement.Option.PASSWORD) && StringUtils.isNotEmpty(options.get(OutOfBandManagement.Option.PASSWORD)))) {
             throw new CloudRuntimeException(String.format("Cannot change out-of-band management password as we've no previously configured password for %s.", host));
         }
         final OutOfBandManagementDriver driver = getDriver(outOfBandManagementConfig);
diff --git a/server/src/main/java/org/apache/cloudstack/vm/UnmanagedVMsManagerImpl.java b/server/src/main/java/org/apache/cloudstack/vm/UnmanagedVMsManagerImpl.java
index bf9ed7f..6229811 100644
--- a/server/src/main/java/org/apache/cloudstack/vm/UnmanagedVMsManagerImpl.java
+++ b/server/src/main/java/org/apache/cloudstack/vm/UnmanagedVMsManagerImpl.java
@@ -137,7 +137,6 @@ import com.cloud.vm.dao.NicDao;
 import com.cloud.vm.dao.UserVmDao;
 import com.cloud.vm.dao.VMInstanceDao;
 import com.cloud.vm.snapshot.dao.VMSnapshotDao;
-import com.google.common.base.Strings;
 import com.google.gson.Gson;
 
 public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
@@ -259,7 +258,7 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
             for (UnmanagedInstanceTO.Disk disk : instance.getDisks()) {
                 UnmanagedInstanceDiskResponse diskResponse = new UnmanagedInstanceDiskResponse();
                 diskResponse.setDiskId(disk.getDiskId());
-                if (!Strings.isNullOrEmpty(disk.getLabel())) {
+                if (StringUtils.isNotEmpty(disk.getLabel())) {
                     diskResponse.setLabel(disk.getLabel());
                 }
                 diskResponse.setCapacity(disk.getCapacity());
@@ -281,7 +280,7 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
                 nicResponse.setId(nic.getNicId());
                 nicResponse.setNetworkName(nic.getNetwork());
                 nicResponse.setMacAddress(nic.getMacAddress());
-                if (!Strings.isNullOrEmpty(nic.getAdapterType())) {
+                if (StringUtils.isNotEmpty(nic.getAdapterType())) {
                     nicResponse.setAdapterType(nic.getAdapterType());
                 }
                 if (!CollectionUtils.isEmpty(nic.getIpAddress())) {
@@ -314,7 +313,7 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
                 if (volumeVO.getRemoved() == null) {
                     continue;
                 }
-                if (Strings.isNullOrEmpty(volumeVO.getChainInfo())) {
+                if (StringUtils.isEmpty(volumeVO.getChainInfo())) {
                     continue;
                 }
                 List<String> volumeFileNames = new ArrayList<>();
@@ -338,14 +337,14 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
                         path = split[split.length - 1];
                         split = path.split("\\.");
                         path = split[0];
-                        if (!Strings.isNullOrEmpty(path)) {
+                        if (StringUtils.isNotEmpty(path)) {
                             if (!additionalNameFilter.contains(path)) {
                                 volumeFileNames.add(path);
                             }
                             if (path.contains("-")) {
                                 split = path.split("-");
                                 path = split[0];
-                                if (!Strings.isNullOrEmpty(path) && !path.equals("ROOT") && !additionalNameFilter.contains(path)) {
+                                if (StringUtils.isNotEmpty(path) && !path.equals("ROOT") && !additionalNameFilter.contains(path)) {
                                     volumeFileNames.add(path);
                                 }
                             }
@@ -576,7 +575,7 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
             if (!diskOfferingMap.containsKey(disk.getDiskId())) {
                 throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("Disk offering for disk ID: %s not found during VM import", disk.getDiskId()));
             }
-            if (Strings.isNullOrEmpty(diskController)) {
+            if (StringUtils.isEmpty(diskController)) {
                 diskController = disk.getController();
             } else {
                 if (!diskController.equals(disk.getController())) {
@@ -604,13 +603,13 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
 
         String networkBroadcastUri = network.getBroadcastUri() == null ? null : network.getBroadcastUri().toString();
         if (nic.getVlan() != null && nic.getVlan() != 0 && nic.getPvlan() == null &&
-                (Strings.isNullOrEmpty(networkBroadcastUri) ||
+                (StringUtils.isEmpty(networkBroadcastUri) ||
                         !networkBroadcastUri.equals(String.format("vlan://%d", nic.getVlan())))) {
             throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("VLAN of network(ID: %s) %s is found different from the VLAN of nic(ID: %s) vlan://%d during VM import", network.getUuid(), networkBroadcastUri, nic.getNicId(), nic.getVlan()));
         }
         String pvLanType = nic.getPvlanType() == null ? "" : nic.getPvlanType().toLowerCase().substring(0, 1);
         if (nic.getVlan() != null && nic.getVlan() != 0 && nic.getPvlan() != null && nic.getPvlan() != 0 &&
-                (Strings.isNullOrEmpty(network.getBroadcastUri().toString()) ||
+                (StringUtils.isEmpty(network.getBroadcastUri().toString()) ||
                         !networkBroadcastUri.equals(String.format("pvlan://%d-%s%d", nic.getVlan(), pvLanType, nic.getPvlan())))) {
             throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("PVLAN of network(ID: %s) %s is found different from the VLAN of nic(ID: %s) pvlan://%d-%s%d during VM import", network.getUuid(), networkBroadcastUri, nic.getNicId(), nic.getVlan(), pvLanType, nic.getPvlan()));
         }
@@ -639,11 +638,11 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
             throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("Network for nic ID: %s not found during VM import", nic.getNicId()));
         }
         // Check IP is assigned for non L2 networks
-        if (!network.getGuestType().equals(Network.GuestType.L2) && (ipAddresses == null || Strings.isNullOrEmpty(ipAddresses.getIp4Address()))) {
+        if (!network.getGuestType().equals(Network.GuestType.L2) && (ipAddresses == null || StringUtils.isEmpty(ipAddresses.getIp4Address()))) {
             throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("NIC(ID: %s) needs a valid IP address for it to be associated with network(ID: %s). %s parameter of API can be used for this", nic.getNicId(), network.getUuid(), ApiConstants.NIC_IP_ADDRESS_LIST));
         }
         // If network is non L2, IP v4 is assigned and not set to auto-assign, check it is available for network
-        if (!network.getGuestType().equals(Network.GuestType.L2) && ipAddresses != null && !Strings.isNullOrEmpty(ipAddresses.getIp4Address()) && !ipAddresses.getIp4Address().equals("auto")) {
+        if (!network.getGuestType().equals(Network.GuestType.L2) && ipAddresses != null && StringUtils.isNotEmpty(ipAddresses.getIp4Address()) && !ipAddresses.getIp4Address().equals("auto")) {
             Set<Long> ips = networkModel.getAvailableIps(network, ipAddresses.getIp4Address());
             if (CollectionUtils.isEmpty(ips) || !ips.contains(NetUtils.ip2Long(ipAddresses.getIp4Address()))) {
                 throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("IP address %s for NIC(ID: %s) is not available in network(ID: %s)", ipAddresses.getIp4Address(), nic.getNicId(), network.getUuid()));
@@ -655,7 +654,7 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
         Map<String, Long> nicNetworkMap = new HashMap<>();
         String nicAdapter = null;
         for (UnmanagedInstanceTO.Nic nic : nics) {
-            if (Strings.isNullOrEmpty(nicAdapter)) {
+            if (StringUtils.isEmpty(nicAdapter)) {
                 nicAdapter = nic.getAdapterType();
             } else {
                 if (!nicAdapter.equals(nic.getAdapterType())) {
@@ -705,9 +704,9 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
                                                       Volume.Type type, String name, Long diskSize, Long minIops, Long maxIops, VirtualMachineTemplate template,
                                                       Account owner, Long deviceId) {
         final DataCenter zone = dataCenterDao.findById(vm.getDataCenterId());
-        final String path = Strings.isNullOrEmpty(disk.getFileBaseName()) ? disk.getImagePath() : disk.getFileBaseName();
+        final String path = StringUtils.isEmpty(disk.getFileBaseName()) ? disk.getImagePath() : disk.getFileBaseName();
         String chainInfo = disk.getChainInfo();
-        if (Strings.isNullOrEmpty(chainInfo)) {
+        if (StringUtils.isEmpty(chainInfo)) {
             VirtualMachineDiskInfo diskInfo = new VirtualMachineDiskInfo();
             diskInfo.setDiskDeviceBusName(String.format("%s%d:%d", disk.getController(), disk.getControllerUnit(), disk.getPosition()));
             diskInfo.setDiskChain(new String[]{disk.getImagePath()});
@@ -876,7 +875,7 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
             } catch (Exception e) {
                 LOGGER.error(String.format("VM import failed for unmanaged vm: %s during volume migration", vm.getInstanceName()), e);
                 cleanupFailedImportVM(vm);
-                throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("VM import failed for unmanaged vm: %s during volume migration. %s", userVm.getInstanceName(), Strings.nullToEmpty(e.getMessage())));
+                throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("VM import failed for unmanaged vm: %s during volume migration. %s", userVm.getInstanceName(), StringUtils.defaultString(e.getMessage())));
             }
         }
         return userVm;
@@ -928,7 +927,7 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
                 UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_ASSIGN, userVm.getAccountId(), userVm.getDataCenterId(), userVm.getId(),
                         Long.toString(nic.getId()), network.getNetworkOfferingId(), null, 1L, VirtualMachine.class.getName(), userVm.getUuid(), userVm.isDisplay());
             } catch (Exception e) {
-                LOGGER.error(String.format("Failed to publish network usage records during VM import. %s", Strings.nullToEmpty(e.getMessage())));
+                LOGGER.error(String.format("Failed to publish network usage records during VM import. %s", StringUtils.defaultString(e.getMessage())));
             }
         }
     }
@@ -945,7 +944,7 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
             validatedServiceOffering = getUnmanagedInstanceServiceOffering(unmanagedInstance, serviceOffering, owner, zone, details);
         } catch (Exception e) {
             LOGGER.error("Service offering for VM import not compatible", e);
-            throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("Failed to import VM: %s. %s", unmanagedInstance.getName(), Strings.nullToEmpty(e.getMessage())));
+            throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("Failed to import VM: %s. %s", unmanagedInstance.getName(), StringUtils.defaultString(e.getMessage())));
         }
 
         String internalCSName = unmanagedInstance.getInternalCSName();
@@ -972,7 +971,7 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
         Pair<UnmanagedInstanceTO.Disk, List<UnmanagedInstanceTO.Disk>> rootAndDataDisksPair = getRootAndDataDisks(unmanagedInstanceDisks, dataDiskOfferingMap);
         final UnmanagedInstanceTO.Disk rootDisk = rootAndDataDisksPair.first();
         final List<UnmanagedInstanceTO.Disk> dataDisks = rootAndDataDisksPair.second();
-        if (rootDisk == null || Strings.isNullOrEmpty(rootDisk.getController())) {
+        if (rootDisk == null || StringUtils.isEmpty(rootDisk.getController())) {
             throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("VM import failed. Unable to retrieve root disk details for VM: %s ", instanceName));
         }
         allDetails.put(VmDetailConstants.ROOT_DISK_CONTROLLER, rootDisk.getController());
@@ -985,7 +984,7 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
             resourceLimitService.checkResourceLimit(owner, Resource.ResourceType.volume, unmanagedInstanceDisks.size());
         } catch (ResourceAllocationException e) {
             LOGGER.error(String.format("Volume resource allocation error for owner: %s", owner.getUuid()), e);
-            throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("Volume resource allocation error for owner: %s. %s", owner.getUuid(), Strings.nullToEmpty(e.getMessage())));
+            throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("Volume resource allocation error for owner: %s. %s", owner.getUuid(), StringUtils.defaultString(e.getMessage())));
         }
         // Check NICs and supplied networks
         Map<String, Network.IpAddresses> nicIpAddressMap = getNicIpAddresses(unmanagedInstance.getNics(), callerNicIpAddressMap);
@@ -1037,7 +1036,7 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
         } catch (Exception e) {
             LOGGER.error(String.format("Failed to import volumes while importing vm: %s", instanceName), e);
             cleanupFailedImportVM(userVm);
-            throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("Failed to import volumes while importing vm: %s. %s", instanceName, Strings.nullToEmpty(e.getMessage())));
+            throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("Failed to import volumes while importing vm: %s. %s", instanceName, StringUtils.defaultString(e.getMessage())));
         }
         try {
             boolean firstNic = true;
@@ -1050,7 +1049,7 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
         } catch (Exception e) {
             LOGGER.error(String.format("Failed to import NICs while importing vm: %s", instanceName), e);
             cleanupFailedImportVM(userVm);
-            throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("Failed to import NICs while importing vm: %s. %s", instanceName, Strings.nullToEmpty(e.getMessage())));
+            throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("Failed to import NICs while importing vm: %s. %s", instanceName, StringUtils.defaultString(e.getMessage())));
         }
         if (migrateAllowed) {
             userVm = migrateImportedVM(host, template, validatedServiceOffering, userVm, owner, diskProfileStoragePoolList);
@@ -1134,10 +1133,10 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
         }
         final DataCenter zone = dataCenterDao.findById(cluster.getDataCenterId());
         final String instanceName = cmd.getName();
-        if (Strings.isNullOrEmpty(instanceName)) {
+        if (StringUtils.isEmpty(instanceName)) {
             throw new InvalidParameterValueException(String.format("Instance name cannot be empty"));
         }
-        if (cmd.getDomainId() != null && Strings.isNullOrEmpty(cmd.getAccountName())) {
+        if (cmd.getDomainId() != null && StringUtils.isEmpty(cmd.getAccountName())) {
             throw new InvalidParameterValueException("domainid parameter must be specified with account parameter");
         }
         final Account owner = accountService.getActiveAccountById(cmd.getEntityOwnerId());
@@ -1175,14 +1174,14 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
             resourceLimitService.checkResourceLimit(owner, Resource.ResourceType.user_vm, 1);
         } catch (ResourceAllocationException e) {
             LOGGER.error(String.format("VM resource allocation error for account: %s", owner.getUuid()), e);
-            throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("VM resource allocation error for account: %s. %s", owner.getUuid(), Strings.nullToEmpty(e.getMessage())));
+            throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("VM resource allocation error for account: %s. %s", owner.getUuid(), StringUtils.defaultString(e.getMessage())));
         }
         String displayName = cmd.getDisplayName();
-        if (Strings.isNullOrEmpty(displayName)) {
+        if (StringUtils.isEmpty(displayName)) {
             displayName = instanceName;
         }
         String hostName = cmd.getHostName();
-        if (Strings.isNullOrEmpty(hostName)) {
+        if (StringUtils.isEmpty(hostName)) {
             if (!NetUtils.verifyDomainNameLabel(instanceName, true)) {
                 throw new InvalidParameterValueException(String.format("Please provide hostname for the VM. VM name contains unsupported characters for it to be used as hostname"));
             }
@@ -1237,14 +1236,14 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager {
                     if (template.getName().equals(VM_IMPORT_DEFAULT_TEMPLATE_NAME)) {
                         String osName = unmanagedInstance.getOperatingSystem();
                         GuestOS guestOS = null;
-                        if (!Strings.isNullOrEmpty(osName)) {
+                        if (StringUtils.isNotEmpty(osName)) {
                             guestOS = guestOSDao.listByDisplayName(osName);
                         }
                         GuestOSHypervisor guestOSHypervisor = null;
                         if (guestOS != null) {
                             guestOSHypervisor = guestOSHypervisorDao.findByOsIdAndHypervisor(guestOS.getId(), host.getHypervisorType().toString(), host.getHypervisorVersion());
                         }
-                        if (guestOSHypervisor == null && !Strings.isNullOrEmpty(unmanagedInstance.getOperatingSystemId())) {
+                        if (guestOSHypervisor == null && StringUtils.isNotEmpty(unmanagedInstance.getOperatingSystemId())) {
                             guestOSHypervisor = guestOSHypervisorDao.findByOsNameAndHypervisor(unmanagedInstance.getOperatingSystemId(), host.getHypervisorType().toString(), host.getHypervisorVersion());
                         }
                         if (guestOSHypervisor == null) {
diff --git a/server/src/test/java/com/cloud/network/vpc/NetworkACLServiceImplTest.java b/server/src/test/java/com/cloud/network/vpc/NetworkACLServiceImplTest.java
index f21bc2c..ecbf983 100644
--- a/server/src/test/java/com/cloud/network/vpc/NetworkACLServiceImplTest.java
+++ b/server/src/test/java/com/cloud/network/vpc/NetworkACLServiceImplTest.java
@@ -35,7 +35,7 @@ import org.apache.cloudstack.api.command.user.network.MoveNetworkAclItemCmd;
 import org.apache.cloudstack.api.command.user.network.UpdateNetworkACLItemCmd;
 import org.apache.cloudstack.api.command.user.network.UpdateNetworkACLListCmd;
 import org.apache.cloudstack.context.CallContext;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxy.java b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxy.java
index 702e9a8..fd4f68b 100644
--- a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxy.java
+++ b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxy.java
@@ -31,7 +31,7 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.Executor;
 
-import com.cloud.utils.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.xml.DOMConfigurator;
 import org.eclipse.jetty.websocket.api.Session;
 
diff --git a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java
index cf0a05d..5960849 100644
--- a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java
+++ b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java
@@ -16,7 +16,7 @@
 // under the License.
 package com.cloud.consoleproxy;
 
-import com.cloud.utils.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.eclipse.jetty.websocket.api.Session;
 import org.eclipse.jetty.websocket.api.extensions.Frame;
diff --git a/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java b/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java
index 99539a2..3a91457 100644
--- a/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java
+++ b/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java
@@ -123,7 +123,6 @@ import com.cloud.user.AccountService;
 import com.cloud.utils.DateUtil;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.component.ManagerBase;
 import com.cloud.utils.db.GlobalLock;
 import com.cloud.utils.db.QueryBuilder;
@@ -148,6 +147,7 @@ import com.cloud.vm.dao.SecondaryStorageVmDao;
 import com.cloud.vm.dao.UserVmDetailsDao;
 import com.cloud.vm.dao.VMInstanceDao;
 import org.apache.commons.lang3.BooleanUtils;
+import org.apache.commons.lang3.StringUtils;
 
 /**
 * Class to manage secondary storages. <br><br>
@@ -858,7 +858,7 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar
         _useSSlCopy = BooleanUtils.toBoolean(_configDao.getValue("secstorage.encrypt.copy"));
 
         String ssvmUrlDomain = _configDao.getValue("secstorage.ssl.cert.domain");
-        if(_useSSlCopy && org.apache.commons.lang3.StringUtils.isEmpty(ssvmUrlDomain)){
+        if(_useSSlCopy && StringUtils.isEmpty(ssvmUrlDomain)){
             s_logger.warn("Empty secondary storage url domain, explicitly disabling SSL");
             _useSSlCopy = false;
         }
@@ -1074,7 +1074,7 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar
 
         StringBuilder buf = profile.getBootArgsBuilder();
         buf.append(" template=domP type=secstorage");
-        buf.append(" host=").append(StringUtils.toCSVList(indirectAgentLB.getManagementServerList(dest.getHost().getId(), dest.getDataCenter().getId(), null)));
+        buf.append(" host=").append(com.cloud.utils.StringUtils.toCSVList(indirectAgentLB.getManagementServerList(dest.getHost().getId(), dest.getDataCenter().getId(), null)));
         buf.append(" port=").append(_mgmtPort);
         buf.append(" name=").append(profile.getVirtualMachine().getHostName());
 
diff --git a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/resource/HttpUploadServerHandler.java b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/resource/HttpUploadServerHandler.java
index ea4e75d..69ebbd9 100644
--- a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/resource/HttpUploadServerHandler.java
+++ b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/resource/HttpUploadServerHandler.java
@@ -29,7 +29,7 @@ import java.util.Map.Entry;
 
 import org.apache.cloudstack.storage.template.UploadEntity;
 import org.apache.cloudstack.utils.imagestore.ImageStoreUtil;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.exception.InvalidParameterValueException;
diff --git a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
index 565c4df..21dbac1 100644
--- a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
+++ b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
@@ -22,11 +22,9 @@ import static com.cloud.network.NetworkModel.PASSWORD_FILE;
 import static com.cloud.network.NetworkModel.PUBLIC_KEYS_FILE;
 import static com.cloud.network.NetworkModel.USERDATA_DIR;
 import static com.cloud.network.NetworkModel.USERDATA_FILE;
-import static com.cloud.utils.StringUtils.join;
 import static com.cloud.utils.storage.S3.S3Utils.putFile;
 import static java.lang.String.format;
 import static java.util.Arrays.asList;
-import static org.apache.commons.lang.StringUtils.substringAfterLast;
 
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
@@ -80,7 +78,7 @@ import org.apache.cloudstack.utils.security.DigestHelper;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.NameValuePair;
@@ -798,7 +796,7 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
                     return new CopyCmdAnswer(errMsg);
                 }
             }
-            File destFile = new File(downloadDirectory, substringAfterLast(srcData.getPath(), S3Utils.SEPARATOR));
+            File destFile = new File(downloadDirectory, StringUtils.substringAfterLast(srcData.getPath(), S3Utils.SEPARATOR));
             S3Utils.getFile(s3, s3.getBucketName(), srcData.getPath(), destFile).waitForCompletion();
 
             return postProcessing(destFile, downloadPath, destPath, srcData, destData);
@@ -1093,7 +1091,7 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
     }
 
     protected String determineS3TemplateDirectory(final Long accountId, final Long templateId, final String templateUniqueName) {
-        return join(asList(TEMPLATE_ROOT_DIR, accountId, templateId, templateUniqueName), S3Utils.SEPARATOR);
+        return StringUtils.join(asList(TEMPLATE_ROOT_DIR, accountId, templateId, templateUniqueName), S3Utils.SEPARATOR);
     }
 
     private String determineS3TemplateNameFromKey(String key) {
@@ -1101,7 +1099,7 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
     }
 
     protected String determineS3VolumeDirectory(final Long accountId, final Long volId) {
-        return join(asList(VOLUME_ROOT_DIR, accountId, volId), S3Utils.SEPARATOR);
+        return StringUtils.join(asList(VOLUME_ROOT_DIR, accountId, volId), S3Utils.SEPARATOR);
     }
 
     protected Long determineS3VolumeIdFromKey(String key) {
@@ -1109,7 +1107,7 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
     }
 
     private String determineStorageTemplatePath(final String storagePath, String dataPath, String nfsVersion) {
-        return join(asList(getRootDir(storagePath, nfsVersion), dataPath), File.separator);
+        return StringUtils.join(asList(getRootDir(storagePath, nfsVersion), dataPath), File.separator);
     }
 
     protected File downloadFromUrlToNfs(String url, NfsTO nfs, String path, String name) {
@@ -3470,7 +3468,7 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
     public void validatePostUploadRequest(String signature, String metadata, String timeout, String hostname, long contentLength, String uuid)
             throws InvalidParameterValueException {
         // check none of the params are empty
-        if (StringUtils.isEmpty(signature) || StringUtils.isEmpty(metadata) || StringUtils.isEmpty(timeout)) {
+        if (StringUtils.isAnyEmpty(signature, metadata, timeout)) {
             updateStateMapWithError(uuid, "signature, metadata and expires are compulsory fields.");
             throw new InvalidParameterValueException("signature, metadata and expires are compulsory fields.");
         }
diff --git a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/DownloadManagerImpl.java b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/DownloadManagerImpl.java
index a3595a2..e06d7da 100644
--- a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/DownloadManagerImpl.java
+++ b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/DownloadManagerImpl.java
@@ -77,13 +77,13 @@ import com.cloud.storage.template.Processor.FormatInfo;
 import com.cloud.storage.template.TemplateDownloader.DownloadCompleteCallback;
 import com.cloud.storage.template.TemplateDownloader.Status;
 import com.cloud.utils.NumbersUtil;
-import com.cloud.utils.StringUtils;
 import com.cloud.utils.component.ManagerBase;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.script.Script;
 import com.cloud.utils.storage.QCOW2Utils;
 import org.apache.cloudstack.utils.security.ChecksumValue;
 import org.apache.cloudstack.utils.security.DigestHelper;
+import org.apache.commons.lang3.StringUtils;
 
 import static com.cloud.utils.NumbersUtil.toHumanReadableSize;
 
@@ -463,7 +463,7 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager
         if (extension.equals("iso")) {
             templateName = jobs.get(jobId).getTmpltName().trim().replace(" ", "_");
         } else {
-            templateName = UUID.nameUUIDFromBytes((jobs.get(jobId).getTmpltName() + System.currentTimeMillis()).getBytes(StringUtils.getPreferredCharset())).toString();
+            templateName = UUID.nameUUIDFromBytes((jobs.get(jobId).getTmpltName() + System.currentTimeMillis()).getBytes(com.cloud.utils.StringUtils.getPreferredCharset())).toString();
         }
         return templateName;
     }
diff --git a/tools/checkstyle/src/main/resources/cloud-style.xml b/tools/checkstyle/src/main/resources/cloud-style.xml
index 4fad942..ae68a7a 100644
--- a/tools/checkstyle/src/main/resources/cloud-style.xml
+++ b/tools/checkstyle/src/main/resources/cloud-style.xml
@@ -40,6 +40,10 @@
     <module name="ParameterName" />
     <module name="TypeName" />
     <module name="AvoidStarImport" />
+	<module name="IllegalImport">
+		<property name="illegalPkgs" value="" />
+		<property name="illegalClasses" value="com.google.common.base.Strings, org.apache.commons.lang.StringUtils"/>
+  	</module>
   </module>
 
   <module name="RegexpSingleline">
diff --git a/usage/src/main/java/com/cloud/usage/parser/VMInstanceUsageParser.java b/usage/src/main/java/com/cloud/usage/parser/VMInstanceUsageParser.java
index 8c30e99..e918d0e 100644
--- a/usage/src/main/java/com/cloud/usage/parser/VMInstanceUsageParser.java
+++ b/usage/src/main/java/com/cloud/usage/parser/VMInstanceUsageParser.java
@@ -28,6 +28,7 @@ import javax.inject.Inject;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 import org.apache.cloudstack.usage.UsageTypes;
+import org.apache.commons.lang3.StringUtils;
 
 import com.cloud.usage.UsageVMInstanceVO;
 import com.cloud.usage.UsageVO;
@@ -35,7 +36,6 @@ import com.cloud.usage.dao.UsageDao;
 import com.cloud.usage.dao.UsageVMInstanceDao;
 import com.cloud.user.AccountVO;
 import com.cloud.utils.Pair;
-import com.cloud.utils.StringUtils;
 
 @Component
 public class VMInstanceUsageParser {
diff --git a/utils/src/main/java/com/cloud/utils/StringUtils.java b/utils/src/main/java/com/cloud/utils/StringUtils.java
index e858bee..f427b8f 100644
--- a/utils/src/main/java/com/cloud/utils/StringUtils.java
+++ b/utils/src/main/java/com/cloud/utils/StringUtils.java
@@ -22,7 +22,6 @@ package com.cloud.utils;
 import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
@@ -54,43 +53,6 @@ public class StringUtils {
         return Charset.defaultCharset();
     }
 
-    public static String join(final Iterable<? extends Object> iterable, final String delim) {
-        final StringBuilder sb = new StringBuilder();
-        if (iterable != null) {
-            final Iterator<? extends Object> iter = iterable.iterator();
-            if (iter.hasNext()) {
-                final Object next = iter.next();
-                sb.append(next.toString());
-            }
-            while (iter.hasNext()) {
-                final Object next = iter.next();
-                sb.append(delim + next.toString());
-            }
-        }
-        return sb.toString();
-    }
-
-    public static String join(final String delimiter, final Object... components) {
-        return org.apache.commons.lang.StringUtils.join(components, delimiter);
-    }
-    /**
-     * @deprecated
-     * Please use org.apache.commons.lang.StringUtils.isBlank() as a replacement
-     */
-    @Deprecated
-    public static boolean isBlank(String str) {
-        return org.apache.commons.lang.StringUtils.isBlank(str);
-    }
-
-    /**
-     * @deprecated
-     * Please use org.apache.commons.lang.StringUtils.isNotBlank() as a replacement
-     */
-    @Deprecated
-    public static boolean isNotBlank(final String str) {
-        return org.apache.commons.lang.StringUtils.isNotBlank(str);
-    }
-
     public static String cleanupTags(String tags) {
         if (tags != null) {
             final String[] tokens = tags.split(",");
@@ -311,6 +273,6 @@ public class StringUtils {
     }
 
     public static String toCSVList(final List<String> csvList) {
-        return join(csvList, ",");
+        return org.apache.commons.lang3.StringUtils.defaultString(org.apache.commons.lang3.StringUtils.join(csvList, ","));
     }
 }
diff --git a/utils/src/main/java/com/cloud/utils/SwiftUtil.java b/utils/src/main/java/com/cloud/utils/SwiftUtil.java
index 34aceb5..7c2914d 100644
--- a/utils/src/main/java/com/cloud/utils/SwiftUtil.java
+++ b/utils/src/main/java/com/cloud/utils/SwiftUtil.java
@@ -249,7 +249,7 @@ public class SwiftUtil {
 
     protected static String getSwiftObjectCmd(SwiftClientCfg cfg, String swiftCliPath, String operation,String container, String objectName) {
         String cmd = getSwiftCmd(cfg,swiftCliPath, operation)  +" "+ container+" "+objectName;
-        if(StringUtils.isNotBlank(cfg.getStoragePolicy()) && supportsStoragePolicies(operation)){
+        if(org.apache.commons.lang3.StringUtils.isNotBlank(cfg.getStoragePolicy()) && supportsStoragePolicies(operation)){
             return cmd + String.format(WITH_STORAGE_POLICY, cfg.getStoragePolicy());
         }
         return cmd;
diff --git a/utils/src/main/java/com/cloud/utils/UriUtils.java b/utils/src/main/java/com/cloud/utils/UriUtils.java
index d2022c1..6b22228 100644
--- a/utils/src/main/java/com/cloud/utils/UriUtils.java
+++ b/utils/src/main/java/com/cloud/utils/UriUtils.java
@@ -64,7 +64,7 @@ import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 
@@ -584,11 +584,11 @@ public class UriUtils {
      */
     public static List<Integer> expandVlanUri(final String vlanAuthority) {
         final List<Integer> expandedVlans = new ArrayList<>();
-        if (Strings.isNullOrEmpty(vlanAuthority)) {
+        if (StringUtils.isEmpty(vlanAuthority)) {
             return expandedVlans;
         }
         for (final String vlanPart: vlanAuthority.split(",")) {
-            if (Strings.isNullOrEmpty(vlanPart)) {
+            if (StringUtils.isEmpty(vlanPart)) {
                 continue;
             }
             final String[] range = vlanPart.split("-");
@@ -627,7 +627,7 @@ public class UriUtils {
 
     public static List<Integer> expandPvlanUri(String pvlanRange) {
         final List<Integer> expandedVlans = new ArrayList<>();
-        if (Strings.isNullOrEmpty(pvlanRange)) {
+        if (StringUtils.isEmpty(pvlanRange)) {
             return expandedVlans;
         }
         String[] parts = pvlanRange.split("-\\w");
diff --git a/utils/src/main/java/com/cloud/utils/log/CglibThrowableRenderer.java b/utils/src/main/java/com/cloud/utils/log/CglibThrowableRenderer.java
index 9178c80..d693082 100644
--- a/utils/src/main/java/com/cloud/utils/log/CglibThrowableRenderer.java
+++ b/utils/src/main/java/com/cloud/utils/log/CglibThrowableRenderer.java
@@ -22,7 +22,7 @@ package com.cloud.utils.log;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.spi.ThrowableRenderer;
 
 /**
diff --git a/utils/src/main/java/com/cloud/utils/net/NetUtils.java b/utils/src/main/java/com/cloud/utils/net/NetUtils.java
index c60eac1..feaac8f 100644
--- a/utils/src/main/java/com/cloud/utils/net/NetUtils.java
+++ b/utils/src/main/java/com/cloud/utils/net/NetUtils.java
@@ -42,7 +42,7 @@ import java.util.TreeSet;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang.SystemUtils;
 import org.apache.commons.net.util.SubnetUtils;
 import org.apache.commons.validator.routines.InetAddressValidator;
@@ -821,7 +821,7 @@ public class NetUtils {
     }
 
     static boolean areCidrsNotEmpty(String cidrA, String cidrB) {
-        return StringUtils.isNotEmpty(cidrA) && StringUtils.isNotEmpty(cidrB);
+        return StringUtils.isNoneEmpty(cidrA, cidrB);
     }
 
     public static Long[] cidrToLong(final String cidr) {
diff --git a/utils/src/main/java/com/cloud/utils/security/CertificateHelper.java b/utils/src/main/java/com/cloud/utils/security/CertificateHelper.java
index 3e70dda..b333362 100644
--- a/utils/src/main/java/com/cloud/utils/security/CertificateHelper.java
+++ b/utils/src/main/java/com/cloud/utils/security/CertificateHelper.java
@@ -21,7 +21,7 @@ package com.cloud.utils.security;
 
 import com.cloud.utils.Ternary;
 import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.codec.binary.Base64;
 import org.bouncycastle.util.io.pem.PemObject;
 import org.bouncycastle.util.io.pem.PemReader;
@@ -50,9 +50,9 @@ import java.util.List;
 public class CertificateHelper {
     public static byte[] buildAndSaveKeystore(final String alias, final String cert, final String privateKey, final String storePassword) throws KeyStoreException, CertificateException,
     NoSuchAlgorithmException, InvalidKeySpecException, IOException {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(alias), "Certificate alias cannot be blank");
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(cert), "Certificate cannot be blank");
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(privateKey), "Private key cannot be blank");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(alias), "Certificate alias cannot be blank");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(cert), "Certificate cannot be blank");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(privateKey), "Private key cannot be blank");
 
         final KeyStore ks = buildKeystore(alias, cert, privateKey, storePassword);
 
@@ -106,9 +106,9 @@ public class CertificateHelper {
 
     public static KeyStore buildKeystore(final String alias, final String cert, final String privateKey, final String storePassword) throws KeyStoreException, CertificateException,
     NoSuchAlgorithmException, InvalidKeySpecException, IOException {
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(alias), "Certificate alias cannot be blank");
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(cert), "Certificate cannot be blank");
-        Preconditions.checkArgument(!Strings.isNullOrEmpty(privateKey), "Private key cannot be blank");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(alias), "Certificate alias cannot be blank");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(cert), "Certificate cannot be blank");
+        Preconditions.checkArgument(StringUtils.isNotEmpty(privateKey), "Private key cannot be blank");
 
         char password[] = null;
         if (storePassword != null) {
diff --git a/utils/src/main/java/com/cloud/utils/ssh/SSHCmdHelper.java b/utils/src/main/java/com/cloud/utils/ssh/SSHCmdHelper.java
index 5324cdc..e89120c 100644
--- a/utils/src/main/java/com/cloud/utils/ssh/SSHCmdHelper.java
+++ b/utils/src/main/java/com/cloud/utils/ssh/SSHCmdHelper.java
@@ -25,7 +25,7 @@ import java.io.InputStream;
 import org.apache.cloudstack.utils.security.KeyStoreUtils;
 import org.apache.log4j.Logger;
 
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import com.trilead.ssh2.ChannelCondition;
 import com.trilead.ssh2.Session;
 
@@ -201,7 +201,7 @@ public class SSHCmdHelper {
             }
 
             final SSHCmdResult result = new SSHCmdResult(-1, sbStdoutResult.toString(), sbStdErrResult.toString());
-            if (!Strings.isNullOrEmpty(result.getStdOut()) || !Strings.isNullOrEmpty(result.getStdErr())) {
+            if (!StringUtils.isAllEmpty(result.getStdOut(), result.getStdErr())) {
                 s_logger.debug("SSH command: " + cmd.split(KeyStoreUtils.KS_FILENAME)[0] + "\nSSH command output:" + result.getStdOut().split("-----BEGIN")[0] + "\n" + result.getStdErr());
             }
 
diff --git a/utils/src/main/java/com/cloud/utils/ssh/SshHelper.java b/utils/src/main/java/com/cloud/utils/ssh/SshHelper.java
index d5cd91af..bce61fd 100644
--- a/utils/src/main/java/com/cloud/utils/ssh/SshHelper.java
+++ b/utils/src/main/java/com/cloud/utils/ssh/SshHelper.java
@@ -25,7 +25,7 @@ import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 import org.apache.log4j.Logger;
 import org.joda.time.Duration;
diff --git a/utils/src/main/java/com/cloud/utils/storage/S3/S3Utils.java b/utils/src/main/java/com/cloud/utils/storage/S3/S3Utils.java
index 274ff9b..cc71e82 100644
--- a/utils/src/main/java/com/cloud/utils/storage/S3/S3Utils.java
+++ b/utils/src/main/java/com/cloud/utils/storage/S3/S3Utils.java
@@ -34,6 +34,8 @@ import com.amazonaws.services.s3.model.S3ObjectSummary;
 import com.amazonaws.services.s3.transfer.Download;
 import com.amazonaws.services.s3.transfer.TransferManager;
 import com.amazonaws.services.s3.transfer.Upload;
+
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import java.io.File;
@@ -50,7 +52,6 @@ import static com.amazonaws.Protocol.HTTPS;
 import static java.lang.String.format;
 import static java.util.Collections.emptyList;
 import static java.util.Collections.unmodifiableList;
-import static org.apache.commons.lang.StringUtils.isNotBlank;
 
 
 public final class S3Utils {
@@ -108,7 +109,7 @@ public final class S3Utils {
 
         final AmazonS3Client client = new AmazonS3Client(basicAWSCredentials, configuration);
 
-        if (isNotBlank(clientOptions.getEndPoint())) {
+        if (StringUtils.isNotBlank(clientOptions.getEndPoint())) {
             LOGGER.debug(format("Setting the end point for S3 client with access key %1$s to %2$s.", clientOptions.getAccessKey(), clientOptions.getEndPoint()));
 
             client.setEndpoint(clientOptions.getEndPoint());
diff --git a/utils/src/main/java/org/apache/cloudstack/utils/CloudStackVersion.java b/utils/src/main/java/org/apache/cloudstack/utils/CloudStackVersion.java
index 8bd2b6f..91c5a97 100644
--- a/utils/src/main/java/org/apache/cloudstack/utils/CloudStackVersion.java
+++ b/utils/src/main/java/org/apache/cloudstack/utils/CloudStackVersion.java
@@ -24,10 +24,10 @@ import com.google.common.collect.ImmutableList;
 
 import java.util.regex.Pattern;
 
+import org.apache.commons.lang3.StringUtils;
+
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkState;
-import static org.apache.commons.lang.StringUtils.isNotBlank;
-import static org.apache.commons.lang.StringUtils.substringBefore;
 
 /**
  *
@@ -87,9 +87,9 @@ public final class CloudStackVersion implements Comparable<CloudStackVersion> {
     public static CloudStackVersion parse(final String value) {
 
         // Strip out any legacy patch information from the version string ...
-        final String trimmedValue = substringBefore(value, "-");
+        final String trimmedValue = StringUtils.substringBefore(value, "-");
 
-        checkArgument(isNotBlank(trimmedValue), CloudStackVersion.class.getName() + ".parse(String) requires a non-blank value");
+        checkArgument(StringUtils.isNotBlank(trimmedValue), CloudStackVersion.class.getName() + ".parse(String) requires a non-blank value");
         checkArgument(NUMBER_VERSION_FORMAT.matcher(trimmedValue).matches(), CloudStackVersion.class.getName() + ".parse(String) passed " +
                 value + ", but requires a value in the format of int.int.int(.int)(-<legacy patch>)");
 
diff --git a/utils/src/main/java/org/apache/cloudstack/utils/imagestore/ImageStoreUtil.java b/utils/src/main/java/org/apache/cloudstack/utils/imagestore/ImageStoreUtil.java
index da19419..5d6ba2c 100644
--- a/utils/src/main/java/org/apache/cloudstack/utils/imagestore/ImageStoreUtil.java
+++ b/utils/src/main/java/org/apache/cloudstack/utils/imagestore/ImageStoreUtil.java
@@ -20,7 +20,7 @@ package org.apache.cloudstack.utils.imagestore;
 
 import com.cloud.utils.UriUtils;
 import com.cloud.utils.script.Script;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 public class ImageStoreUtil {
diff --git a/utils/src/main/java/org/apache/cloudstack/utils/process/ProcessRunner.java b/utils/src/main/java/org/apache/cloudstack/utils/process/ProcessRunner.java
index 7bb2164..b8b2555 100644
--- a/utils/src/main/java/org/apache/cloudstack/utils/process/ProcessRunner.java
+++ b/utils/src/main/java/org/apache/cloudstack/utils/process/ProcessRunner.java
@@ -20,7 +20,6 @@
 package org.apache.cloudstack.utils.process;
 
 import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
 import com.google.common.io.CharStreams;
 import org.apache.log4j.Logger;
 import org.joda.time.Duration;
@@ -99,7 +98,7 @@ public final class ProcessRunner {
                 retVal = -1;
                 stdError = "Operation timed out, aborted.";
             } finally {
-                if (Strings.isNullOrEmpty(stdError)) {
+                if (StringUtils.isEmpty(stdError)) {
                     stdOutput = CharStreams.toString(new InputStreamReader(process.getInputStream()));
                     stdError = CharStreams.toString(new InputStreamReader(process.getErrorStream()));
                 }
diff --git a/utils/src/main/java/org/apache/cloudstack/utils/redfish/RedfishClient.java b/utils/src/main/java/org/apache/cloudstack/utils/redfish/RedfishClient.java
index 51d6b7c..4687aeb 100644
--- a/utils/src/main/java/org/apache/cloudstack/utils/redfish/RedfishClient.java
+++ b/utils/src/main/java/org/apache/cloudstack/utils/redfish/RedfishClient.java
@@ -38,7 +38,7 @@ import javax.net.ssl.TrustManager;
 
 import com.cloud.utils.nio.TrustAllManager;
 import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.HttpClient;
 import org.apache.http.client.methods.CloseableHttpResponse;
diff --git a/utils/src/main/java/org/apache/cloudstack/utils/security/CertUtils.java b/utils/src/main/java/org/apache/cloudstack/utils/security/CertUtils.java
index d357d6d..e56a780 100644
--- a/utils/src/main/java/org/apache/cloudstack/utils/security/CertUtils.java
+++ b/utils/src/main/java/org/apache/cloudstack/utils/security/CertUtils.java
@@ -73,7 +73,7 @@ import org.bouncycastle.util.io.pem.PemWriter;
 import org.joda.time.DateTime;
 import org.joda.time.DateTimeZone;
 
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 
 public class CertUtils {
 
@@ -219,7 +219,7 @@ public class CertUtils {
         final List<ASN1Encodable> subjectAlternativeNames = new ArrayList<ASN1Encodable>();
         if (publicIPAddresses != null) {
             for (final String publicIPAddress: new HashSet<>(publicIPAddresses)) {
-                if (Strings.isNullOrEmpty(publicIPAddress)) {
+                if (StringUtils.isEmpty(publicIPAddress)) {
                     continue;
                 }
                 subjectAlternativeNames.add(new GeneralName(GeneralName.iPAddress, publicIPAddress));
@@ -227,7 +227,7 @@ public class CertUtils {
         }
         if (dnsNames != null) {
             for (final String dnsName : new HashSet<>(dnsNames)) {
-                if (Strings.isNullOrEmpty(dnsName)) {
+                if (StringUtils.isEmpty(dnsName)) {
                     continue;
                 }
                 subjectAlternativeNames.add(new GeneralName(GeneralName.dNSName, dnsName));
diff --git a/utils/src/main/java/org/apache/cloudstack/utils/security/ChecksumValue.java b/utils/src/main/java/org/apache/cloudstack/utils/security/ChecksumValue.java
index e7a7be4..3ef7e87 100644
--- a/utils/src/main/java/org/apache/cloudstack/utils/security/ChecksumValue.java
+++ b/utils/src/main/java/org/apache/cloudstack/utils/security/ChecksumValue.java
@@ -18,7 +18,7 @@ package org.apache.cloudstack.utils.security;
 
 import java.util.Objects;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 public class ChecksumValue {
     String checksum;
diff --git a/utils/src/main/java/org/apache/cloudstack/utils/security/DigestHelper.java b/utils/src/main/java/org/apache/cloudstack/utils/security/DigestHelper.java
index f856b1f..8fd8e8f 100644
--- a/utils/src/main/java/org/apache/cloudstack/utils/security/DigestHelper.java
+++ b/utils/src/main/java/org/apache/cloudstack/utils/security/DigestHelper.java
@@ -16,7 +16,7 @@
 // under the License.
 package org.apache.cloudstack.utils.security;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/utils/src/main/java/org/apache/cloudstack/utils/volume/VirtualMachineDiskInfo.java b/utils/src/main/java/org/apache/cloudstack/utils/volume/VirtualMachineDiskInfo.java
index c158f10..3445543 100644
--- a/utils/src/main/java/org/apache/cloudstack/utils/volume/VirtualMachineDiskInfo.java
+++ b/utils/src/main/java/org/apache/cloudstack/utils/volume/VirtualMachineDiskInfo.java
@@ -17,7 +17,7 @@
 
 package org.apache.cloudstack.utils.volume;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 public class VirtualMachineDiskInfo {
     private String diskDeviceBusName;
diff --git a/utils/src/test/java/com/cloud/utils/StringUtilsTest.java b/utils/src/test/java/com/cloud/utils/StringUtilsTest.java
index 09a6c71..3d8c57b 100644
--- a/utils/src/test/java/com/cloud/utils/StringUtilsTest.java
+++ b/utils/src/test/java/com/cloud/utils/StringUtilsTest.java
@@ -141,12 +141,6 @@ public class StringUtilsTest {
     }
 
     @Test
-    public void testJoin() {
-        assertEquals("a-b-c", StringUtils.join("-", "a", "b", "c"));
-        assertEquals("", StringUtils.join("-"));
-    }
-
-    @Test
     public void testCleanSecretkeyFromJsonObjectAtEnd() {
         final String input = "{\"foo\":\"bar\",\"secretkey\":\"test\"}";
         // TODO: It would be nice to clean up the regex in question to not
diff --git a/utils/src/test/java/com/cloud/utils/log/CglibThrowableRendererTest.java b/utils/src/test/java/com/cloud/utils/log/CglibThrowableRendererTest.java
index bf9cfc5..136fe12 100644
--- a/utils/src/test/java/com/cloud/utils/log/CglibThrowableRendererTest.java
+++ b/utils/src/test/java/com/cloud/utils/log/CglibThrowableRendererTest.java
@@ -21,7 +21,7 @@ package com.cloud.utils.log;
 
 import java.lang.reflect.Method;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/utils/src/test/java/org/apache/cloudstack/utils/process/ProcessTest.java b/utils/src/test/java/org/apache/cloudstack/utils/process/ProcessTest.java
index a175e60..581a7d5 100644
--- a/utils/src/test/java/org/apache/cloudstack/utils/process/ProcessTest.java
+++ b/utils/src/test/java/org/apache/cloudstack/utils/process/ProcessTest.java
@@ -20,7 +20,7 @@
 package org.apache.cloudstack.utils.process;
 
 import com.cloud.utils.concurrency.NamedThreadFactory;
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import org.joda.time.Duration;
 import org.junit.Assert;
 import org.junit.Test;
@@ -41,7 +41,7 @@ public class ProcessTest {
     public void testProcessRunner() {
         ProcessResult result = RUNNER.executeCommands(Arrays.asList("sleep", "0"));
         Assert.assertEquals(result.getReturnCode(), 0);
-        Assert.assertTrue(Strings.isNullOrEmpty(result.getStdError()));
+        Assert.assertTrue(StringUtils.isEmpty(result.getStdError()));
     }
 
     @Test
diff --git a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/ClusterMO.java b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/ClusterMO.java
index 1bcebc9..6f1b0ae 100644
--- a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/ClusterMO.java
+++ b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/ClusterMO.java
@@ -23,7 +23,7 @@ import java.util.HashMap;
 import java.util.List;
 
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.google.gson.Gson;
diff --git a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/HostMO.java b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/HostMO.java
index a2435b1..07bead7 100644
--- a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/HostMO.java
+++ b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/HostMO.java
@@ -25,7 +25,7 @@ import java.util.Map;
 import java.util.regex.Pattern;
 
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.google.gson.Gson;
diff --git a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java
index c8a0997..6ccd582 100644
--- a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java
+++ b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java
@@ -41,7 +41,7 @@ import javax.xml.transform.stream.StreamResult;
 
 import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
 import org.apache.commons.collections.MapUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.maven.artifact.versioning.ComparableVersion;
 import org.w3c.dom.Document;
diff --git a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
index c27470e..5a08aa7 100644
--- a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
+++ b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
@@ -44,7 +44,7 @@ import com.vmware.vim25.TaskInfo;
 import com.vmware.vim25.TaskInfoState;
 import com.vmware.vim25.VirtualMachineTicket;
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.hypervisor.vmware.mo.SnapshotDescriptor.SnapshotInfo;
@@ -1313,7 +1313,7 @@ public class VirtualMachineMO extends BaseMO {
         deviceConfigSpec.setDevice(newDisk);
         deviceConfigSpec.setFileOperation(VirtualDeviceConfigSpecFileOperation.CREATE);
         deviceConfigSpec.setOperation(VirtualDeviceConfigSpecOperation.ADD);
-        if (!StringUtils.isEmpty(vSphereStoragePolicyId)) {
+        if (StringUtils.isNotEmpty(vSphereStoragePolicyId)) {
             PbmProfileManagerMO profMgrMo = new PbmProfileManagerMO(getContext());
             VirtualMachineDefinedProfileSpec diskProfileSpec = profMgrMo.getProfileSpec(vSphereStoragePolicyId);
             deviceConfigSpec.getProfile().add(diskProfileSpec);
@@ -1439,7 +1439,7 @@ public class VirtualMachineMO extends BaseMO {
 
             deviceConfigSpec.setDevice(newDisk);
             deviceConfigSpec.setOperation(VirtualDeviceConfigSpecOperation.ADD);
-            if (!StringUtils.isEmpty(vSphereStoragePolicyId)) {
+            if (StringUtils.isNotEmpty(vSphereStoragePolicyId)) {
                 PbmProfileManagerMO profMgrMo = new PbmProfileManagerMO(getContext());
                 VirtualMachineDefinedProfileSpec diskProfileSpec = profMgrMo.getProfileSpec(vSphereStoragePolicyId);
                 deviceConfigSpec.getProfile().add(diskProfileSpec);
diff --git a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/util/VmwareClient.java b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/util/VmwareClient.java
index 9d79e54..ccc6828 100644
--- a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/util/VmwareClient.java
+++ b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/util/VmwareClient.java
@@ -43,7 +43,7 @@ import com.vmware.pbm.PbmPortType;
 import com.vmware.pbm.PbmService;
 import com.vmware.pbm.PbmServiceInstanceContent;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.w3c.dom.Element;
 
diff --git a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/util/VmwareContextPool.java b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/util/VmwareContextPool.java
index b2e7636..bcb0960 100644
--- a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/util/VmwareContextPool.java
+++ b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/util/VmwareContextPool.java
@@ -16,7 +16,7 @@
 // under the License.
 package com.cloud.hypervisor.vmware.util;
 
-import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.cloudstack.managed.context.ManagedContextTimerTask;
 import org.apache.log4j.Logger;
 import org.joda.time.Duration;
@@ -58,7 +58,7 @@ public class VmwareContextPool {
 
     public VmwareContext getContext(final String vCenterAddress, final String vCenterUserName) {
         final String poolKey = composePoolKey(vCenterAddress, vCenterUserName).intern();
-        if (Strings.isNullOrEmpty(poolKey)) {
+        if (StringUtils.isEmpty(poolKey)) {
             return null;
         }
         synchronized (poolKey) {
@@ -116,7 +116,7 @@ public class VmwareContextPool {
         final String poolKey = context.getPoolKey().intern();
         final Queue<VmwareContext> ctxList = _pool.get(poolKey);
         synchronized (poolKey) {
-            if (!Strings.isNullOrEmpty(poolKey) && ctxList != null && ctxList.contains(context)) {
+            if (StringUtils.isNotEmpty(poolKey) && ctxList != null && ctxList.contains(context)) {
                 ctxList.remove(context);
             }
         }
diff --git a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/util/VmwareHelper.java b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/util/VmwareHelper.java
index 94b83a3..14ea377 100644
--- a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/util/VmwareHelper.java
+++ b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/util/VmwareHelper.java
@@ -37,7 +37,7 @@ import javax.xml.datatype.DatatypeConfigurationException;
 import javax.xml.datatype.DatatypeFactory;
 import javax.xml.datatype.XMLGregorianCalendar;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.hypervisor.vmware.mo.CustomFieldConstants;
@@ -739,7 +739,7 @@ public class VmwareHelper {
 
     public static HostMO getHostMOFromHostName(final VmwareContext context, final String hostName) {
         HostMO host = null;
-        if (com.cloud.utils.StringUtils.isNotBlank(hostName) && hostName.contains("@")) {
+        if (StringUtils.isNotBlank(hostName) && hostName.contains("@")) {
             String hostMorInfo = hostName.split("@")[0];
             if (hostMorInfo.contains(":")) {
                 ManagedObjectReference morHost = new ManagedObjectReference();