You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2020/07/08 12:39:37 UTC

[ignite] branch master updated: IGNITE-13123 Move control utility to a separate module - Fixes #7910.

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

agoncharuk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 071bb4e  IGNITE-13123 Move control utility to a separate module - Fixes #7910.
071bb4e is described below

commit 071bb4e40d00f9bdaa5833bf41a8b6ed3a32da7f
Author: Kirill Tkalenko <tk...@yandex.ru>
AuthorDate: Wed Jul 8 15:19:03 2020 +0300

    IGNITE-13123 Move control utility to a separate module - Fixes #7910.
---
 assembly/dependencies-apache-ignite.xml            |   2 +
 modules/control-utility/licenses/apache-2.0.txt    | 202 +++++++++++++++++++++
 modules/control-utility/pom.xml                    | 117 ++++++++++++
 .../internal/commandline/ActivateCommand.java      |   0
 .../internal/commandline/BaselineCommand.java      |   0
 .../commandline/ClusterStateChangeCommand.java     |   0
 .../ignite/internal/commandline/Command.java       |   0
 .../internal/commandline/CommandArgIterator.java   |   0
 .../internal/commandline/CommandHandler.java       |   0
 .../ignite/internal/commandline/CommandList.java   |   0
 .../ignite/internal/commandline/CommandLogger.java |   0
 .../internal/commandline/CommonArgParser.java      |   0
 .../commandline/ConnectionAndSslParameters.java    |   0
 .../internal/commandline/DeactivateCommand.java    |   0
 .../ignite/internal/commandline/GridConsole.java   |   0
 .../internal/commandline/GridConsoleAdapter.java   |   0
 .../ignite/internal/commandline/NoopConsole.java   |   0
 .../ignite/internal/commandline/OutputFormat.java  |   0
 .../ignite/internal/commandline/StateCommand.java  |   0
 .../ignite/internal/commandline/TaskExecutor.java  |   0
 .../ignite/internal/commandline/TxCommandArg.java  |   0
 .../ignite/internal/commandline/TxCommands.java    |   0
 .../ignite/internal/commandline/WalCommands.java   |   0
 .../internal/commandline/argument/CommandArg.java  |   0
 .../commandline/argument/CommandArgUtils.java      |   0
 .../commandline/baseline/AutoAdjustCommandArg.java |   0
 .../commandline/baseline/BaselineArguments.java    |   0
 .../commandline/baseline/BaselineSubcommands.java  |   0
 .../commandline/cache/CacheCommandList.java        |   0
 .../internal/commandline/cache/CacheCommands.java  |   0
 .../commandline/cache/CacheContention.java         |   0
 .../commandline/cache/CacheDistribution.java       |   0
 .../commandline/cache/CacheSubcommands.java        |   0
 .../commandline/cache/CacheValidateIndexes.java    |   0
 .../internal/commandline/cache/CacheViewer.java    |   0
 .../commandline/cache/CheckIndexInlineSizes.java   |   0
 .../commandline/cache/FindAndDeleteGarbage.java    |   0
 .../internal/commandline/cache/IdleVerify.java     |  25 +--
 .../commandline/cache/ResetLostPartitions.java     |   0
 .../cache/argument/DistributionCommandArg.java     |   0
 .../cache/argument/FindAndDeleteGarbageArg.java    |   0
 .../cache/argument/IdleVerifyCommandArg.java       |   0
 .../commandline/cache/argument/ListCommandArg.java |   0
 .../cache/argument/ValidateIndexesCommandArg.java  |   0
 .../commandline/diagnostic/DiagnosticCommand.java  |   0
 .../diagnostic/DiagnosticSubCommand.java           |   0
 .../commandline/diagnostic/PageLocksCommand.java   |   0
 .../commandline/encryption/EncryptionCommand.java  |   0
 .../encryption/EncryptionSubcommand.java           |   0
 .../internal/commandline/meta/MetadataCommand.java |  32 ++++
 .../commandline/meta/MetadataSubCommandsList.java  |   0
 .../subcommands/MetadataAbstractSubCommand.java    |  22 ---
 .../meta/subcommands/MetadataDetailsCommand.java   |   3 +-
 .../meta/subcommands/MetadataHelpCommand.java      |   0
 .../meta/subcommands/MetadataListCommand.java      |   2 +-
 .../meta/subcommands/MetadataRemoveCommand.java    |   3 +-
 .../meta/subcommands/MetadataUpdateCommand.java    |   0
 .../internal/commandline/query/KillCommand.java    |   0
 .../internal/commandline/query/KillSubcommand.java |   0
 .../commandline/snapshot/SnapshotCommand.java      |   0
 .../commandline/snapshot/SnapshotSubcommand.java   |   0
 .../main/resources/META-INF/classnames.properties  |  27 +++
 .../commandline/CommandHandlerParsingTest.java     |   0
 .../GridCommandHandlerSslWithSecurityTest.java     |  41 ++++-
 .../testsuites/IgniteControlUtilityTestSuite.java} |  36 +++-
 .../ZookeeperIgniteControlUtilityTestSuite.java}   |  20 +-
 .../util/GridCommandHandlerAbstractTest.java       |   0
 .../util/GridCommandHandlerBrokenIndexTest.java    |   0
 ...idCommandHandlerCheckIndexesInlineSizeTest.java |   0
 ...idCommandHandlerClusterByClassAbstractTest.java |   0
 .../util/GridCommandHandlerClusterByClassTest.java |   0
 ...ridCommandHandlerClusterByClassWithSSLTest.java |   0
 ...CommandHandlerClusterPerMethodAbstractTest.java |   0
 .../GridCommandHandlerIndexingCheckSizeTest.java   |   0
 ...idCommandHandlerIndexingClusterByClassTest.java |   0
 ...ndHandlerIndexingClusterByClassWithSSLTest.java |   0
 .../util/GridCommandHandlerIndexingTest.java       |   0
 .../util/GridCommandHandlerIndexingUtils.java      |   0
 .../GridCommandHandlerIndexingWithSSLTest.java     |   0
 .../util/GridCommandHandlerMetadataTest.java       |   0
 .../ignite/util/GridCommandHandlerSslTest.java     |   0
 .../apache/ignite/util/GridCommandHandlerTest.java |  35 ++++
 .../ignite/util/GridCommandHandlerTestUtils.java   |   0
 .../ignite/util/GridCommandHandlerWithSSLTest.java |   0
 .../ignite/util/KillCommandsCommandShTest.java     |   0
 .../CheckIndexInlineSizesTask.java                 |   5 +-
 .../subcommands/VoidDto.java}                      |  34 ++--
 .../commandline/meta/tasks/MetadataInfoTask.java   |   7 +-
 .../commandline/meta/tasks/MetadataRemoveTask.java |   5 +-
 .../commandline/meta/tasks/MetadataTypeArgs.java   |  33 ----
 .../commandline/meta/tasks/MetadataUpdateTask.java |   6 +-
 .../cache/verify/IdleVerifyResultV2.java           |   4 +-
 .../verify/VerifyBackupPartitionsDumpTask.java     |  26 ++-
 .../visor/encryption/VisorChangeMasterKeyTask.java |   2 -
 .../encryption/VisorGetMasterKeyNameTask.java      |   2 -
 .../visor/snapshot/VisorSnapshotCancelTask.java    |   2 -
 .../visor/snapshot/VisorSnapshotCreateTask.java    |   2 -
 .../main/resources/META-INF/classnames.properties  |  60 +++---
 .../GridCacheFastNodeLeftForTransactionTest.java   |  56 +-----
 .../apache/ignite/ssl/MultipleSSLContextsTest.java |  21 ---
 .../junits/common/GridCommonAbstractTest.java      |   2 +-
 .../IgniteBasicWithPersistenceTestSuite.java       |  10 -
 .../ignite/testsuites/IgniteUtilSelfTestSuite.java |   4 -
 .../ignite/testsuites/SecurityTestSuite.java       |   2 -
 .../db/IgniteCacheGroupsWithRestartsTest.java      |  35 +---
 .../IgniteBinaryCacheQueryTestSuite.java           |   2 -
 ...teCacheWithIndexingAndPersistenceTestSuite.java |  18 +-
 .../zk/ZookeeperDiscoverySpiTestSuite2.java        |   6 +-
 pom.xml                                            |   1 +
 109 files changed, 574 insertions(+), 338 deletions(-)

diff --git a/assembly/dependencies-apache-ignite.xml b/assembly/dependencies-apache-ignite.xml
index fa02927..d2b04dc 100644
--- a/assembly/dependencies-apache-ignite.xml
+++ b/assembly/dependencies-apache-ignite.xml
@@ -34,6 +34,7 @@
             <includes>
                 <include>org.apache.ignite:ignite-spring</include>
                 <include>org.apache.ignite:ignite-indexing</include>
+                <include>org.apache.ignite:ignite-control-utility</include>
             </includes>
             <sources>
                 <includeModuleDirectory>true</includeModuleDirectory>
@@ -143,6 +144,7 @@
                 <exclude>org.apache.ignite:ignite-extdata-platform</exclude>
                 <exclude>org.apache.ignite:ignite-compatibility</exclude>
                 <exclude>org.apache.ignite:ignite-sqlline</exclude>
+                <exclude>org.apache.ignite:ignite-control-utility</exclude>
             </excludes>
             <sources>
                 <includeModuleDirectory>true</includeModuleDirectory>
diff --git a/modules/control-utility/licenses/apache-2.0.txt b/modules/control-utility/licenses/apache-2.0.txt
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/modules/control-utility/licenses/apache-2.0.txt
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/modules/control-utility/pom.xml b/modules/control-utility/pom.xml
new file mode 100644
index 0000000..4520650
--- /dev/null
+++ b/modules/control-utility/pom.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<!--
+    POM file.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.ignite</groupId>
+        <artifactId>ignite-parent</artifactId>
+        <version>1</version>
+        <relativePath>../../parent</relativePath>
+    </parent>
+
+    <artifactId>ignite-control-utility</artifactId>
+    <version>2.9.0-SNAPSHOT</version>
+    <url>http://ignite.apache.org</url>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.ignite</groupId>
+            <artifactId>ignite-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.ignite</groupId>
+            <artifactId>ignite-indexing</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.ignite</groupId>
+            <artifactId>ignite-zookeeper</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.ignite</groupId>
+            <artifactId>ignite-core</artifactId>
+            <version>${project.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.ignite</groupId>
+            <artifactId>ignite-indexing</artifactId>
+            <version>${project.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.ignite</groupId>
+            <artifactId>ignite-zookeeper</artifactId>
+            <version>${project.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-beans</artifactId>
+            <version>${spring.version}</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
+            <version>${spring.version}</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.thoughtworks.xstream</groupId>
+            <artifactId>xstream</artifactId>
+            <version>1.4.8</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-test</artifactId>
+            <version>${curator.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/ActivateCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ActivateCommand.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/ActivateCommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ActivateCommand.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/ClusterStateChangeCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ClusterStateChangeCommand.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/ClusterStateChangeCommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ClusterStateChangeCommand.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/Command.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/Command.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/Command.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/Command.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandArgIterator.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommandArgIterator.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandArgIterator.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommandArgIterator.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandList.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommandList.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandList.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommandList.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandLogger.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommandLogger.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandLogger.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommandLogger.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommonArgParser.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommonArgParser.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/CommonArgParser.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommonArgParser.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/ConnectionAndSslParameters.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ConnectionAndSslParameters.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/ConnectionAndSslParameters.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ConnectionAndSslParameters.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/DeactivateCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/DeactivateCommand.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/DeactivateCommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/DeactivateCommand.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/GridConsole.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/GridConsole.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/GridConsole.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/GridConsole.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/GridConsoleAdapter.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/GridConsoleAdapter.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/GridConsoleAdapter.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/GridConsoleAdapter.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/NoopConsole.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/NoopConsole.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/NoopConsole.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/NoopConsole.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/OutputFormat.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/OutputFormat.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/OutputFormat.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/OutputFormat.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/StateCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/StateCommand.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/StateCommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/StateCommand.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/TaskExecutor.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/TaskExecutor.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/TaskExecutor.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/TaskExecutor.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/TxCommandArg.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/TxCommandArg.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/TxCommandArg.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/TxCommandArg.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/TxCommands.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/TxCommands.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/TxCommands.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/TxCommands.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/WalCommands.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/WalCommands.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/WalCommands.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/WalCommands.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/argument/CommandArg.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/argument/CommandArg.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/argument/CommandArg.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/argument/CommandArg.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/argument/CommandArgUtils.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/argument/CommandArgUtils.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/argument/CommandArgUtils.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/argument/CommandArgUtils.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/baseline/AutoAdjustCommandArg.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/baseline/AutoAdjustCommandArg.java
similarity index 100%
copy from modules/core/src/main/java/org/apache/ignite/internal/commandline/baseline/AutoAdjustCommandArg.java
copy to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/baseline/AutoAdjustCommandArg.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/baseline/BaselineArguments.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/baseline/BaselineArguments.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/baseline/BaselineArguments.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/baseline/BaselineArguments.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/baseline/BaselineSubcommands.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/baseline/BaselineSubcommands.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/baseline/BaselineSubcommands.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/baseline/BaselineSubcommands.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/CacheCommandList.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheCommandList.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/CacheCommandList.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheCommandList.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/CacheCommands.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheCommands.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/CacheCommands.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheCommands.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/CacheContention.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheContention.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/CacheContention.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheContention.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/CacheDistribution.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheDistribution.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/CacheDistribution.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheDistribution.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/CacheSubcommands.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheSubcommands.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/CacheSubcommands.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheSubcommands.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/CacheValidateIndexes.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheValidateIndexes.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/CacheValidateIndexes.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheValidateIndexes.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/CacheViewer.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheViewer.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/CacheViewer.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheViewer.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/CheckIndexInlineSizes.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CheckIndexInlineSizes.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/CheckIndexInlineSizes.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CheckIndexInlineSizes.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/FindAndDeleteGarbage.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/FindAndDeleteGarbage.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/FindAndDeleteGarbage.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/FindAndDeleteGarbage.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/IdleVerify.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/IdleVerify.java
similarity index 93%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/IdleVerify.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/IdleVerify.java
index 5f98f22..7f4ecb0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/IdleVerify.java
+++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/IdleVerify.java
@@ -23,7 +23,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.function.Consumer;
 import java.util.logging.Logger;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
@@ -41,7 +40,6 @@ import org.apache.ignite.internal.processors.cache.verify.IdleVerifyResultV2;
 import org.apache.ignite.internal.processors.cache.verify.PartitionHashRecord;
 import org.apache.ignite.internal.processors.cache.verify.PartitionKey;
 import org.apache.ignite.internal.processors.cache.verify.VerifyBackupPartitionsTaskV2;
-import org.apache.ignite.internal.util.typedef.internal.SB;
 import org.apache.ignite.internal.visor.verify.CacheFilterEnum;
 import org.apache.ignite.internal.visor.verify.VisorIdleVerifyDumpTask;
 import org.apache.ignite.internal.visor.verify.VisorIdleVerifyDumpTaskArg;
@@ -62,6 +60,7 @@ import static org.apache.ignite.internal.commandline.cache.argument.IdleVerifyCo
 import static org.apache.ignite.internal.commandline.cache.argument.IdleVerifyCommandArg.DUMP;
 import static org.apache.ignite.internal.commandline.cache.argument.IdleVerifyCommandArg.EXCLUDE_CACHES;
 import static org.apache.ignite.internal.commandline.cache.argument.IdleVerifyCommandArg.SKIP_ZEROS;
+import static org.apache.ignite.internal.processors.cache.verify.VerifyBackupPartitionsDumpTask.logParsedArgs;
 
 /**
  *
@@ -327,28 +326,6 @@ public class IdleVerify implements Command<IdleVerify.Arguments> {
     }
 
     /**
-     * Passes idle_verify parsed arguments to given log consumer.
-     *
-     * @param args idle_verify arguments.
-     * @param logConsumer Logger.
-     */
-    public static void logParsedArgs(VisorIdleVerifyTaskArg args, Consumer<String> logConsumer) {
-        SB options = new SB("idle_verify task was executed with the following args: ");
-
-        options
-            .a("caches=[")
-            .a(args.caches() == null ? "" : String.join(", ", args.caches()))
-            .a("], excluded=[")
-            .a(args.excludeCaches() == null ? "" : String.join(", ", args.excludeCaches()))
-            .a("]")
-            .a(", cacheFilter=[")
-            .a(args.cacheFilterEnum().toString())
-            .a("]\n");
-
-        logConsumer.accept(options.toString());
-    }
-
-    /**
      * @param client Client.
      * @param clientCfg Client configuration.
      */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/ResetLostPartitions.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/ResetLostPartitions.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/ResetLostPartitions.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/ResetLostPartitions.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/argument/DistributionCommandArg.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/argument/DistributionCommandArg.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/argument/DistributionCommandArg.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/argument/DistributionCommandArg.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/argument/FindAndDeleteGarbageArg.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/argument/FindAndDeleteGarbageArg.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/argument/FindAndDeleteGarbageArg.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/argument/FindAndDeleteGarbageArg.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/argument/IdleVerifyCommandArg.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/argument/IdleVerifyCommandArg.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/argument/IdleVerifyCommandArg.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/argument/IdleVerifyCommandArg.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/argument/ListCommandArg.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/argument/ListCommandArg.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/argument/ListCommandArg.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/argument/ListCommandArg.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/argument/ValidateIndexesCommandArg.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/argument/ValidateIndexesCommandArg.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/argument/ValidateIndexesCommandArg.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/argument/ValidateIndexesCommandArg.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/diagnostic/DiagnosticCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/diagnostic/DiagnosticCommand.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/diagnostic/DiagnosticCommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/diagnostic/DiagnosticCommand.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/diagnostic/DiagnosticSubCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/diagnostic/DiagnosticSubCommand.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/diagnostic/DiagnosticSubCommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/diagnostic/DiagnosticSubCommand.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/diagnostic/PageLocksCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/diagnostic/PageLocksCommand.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/diagnostic/PageLocksCommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/diagnostic/PageLocksCommand.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/encryption/EncryptionCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/encryption/EncryptionCommand.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/encryption/EncryptionCommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/encryption/EncryptionCommand.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/encryption/EncryptionSubcommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/encryption/EncryptionSubcommand.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/encryption/EncryptionSubcommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/encryption/EncryptionSubcommand.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/MetadataCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/MetadataCommand.java
similarity index 82%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/MetadataCommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/MetadataCommand.java
index bdf53b5..9435ede 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/MetadataCommand.java
+++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/MetadataCommand.java
@@ -129,4 +129,36 @@ public class MetadataCommand implements Command<Object> {
     @Override public Object arg() {
         return delegate.arg();
     }
+
+    /**
+     * @param argIter Command line arguments iterator.
+     * @return Metadata type argument.
+     */
+    public static MetadataTypeArgs parseArgs(CommandArgIterator argIter) {
+        String typeName = null;
+        Integer typeId = null;
+
+        while (argIter.hasNextSubArg() && typeName == null && typeId == null) {
+            String optName = argIter.nextArg("Expecting " + MetadataTypeArgs.TYPE_NAME + " or " + MetadataTypeArgs.TYPE_ID);
+
+            switch (optName) {
+                case MetadataTypeArgs.TYPE_NAME:
+                    typeName = argIter.nextArg("type name");
+
+                    break;
+
+                case MetadataTypeArgs.TYPE_ID:
+                    typeId = argIter.nextIntArg("typeId");
+
+                    break;
+            }
+        }
+
+        if (typeName == null && typeId == null) {
+            throw new IllegalArgumentException("Type to remove is not specified. " +
+                "Please add one of the options: --typeName <type_name> or --typeId <type_id>");
+        }
+
+        return new MetadataTypeArgs(typeName, typeId);
+    }
 }
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/MetadataSubCommandsList.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/MetadataSubCommandsList.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/MetadataSubCommandsList.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/MetadataSubCommandsList.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataAbstractSubCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataAbstractSubCommand.java
similarity index 87%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataAbstractSubCommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataAbstractSubCommand.java
index 0e586e0..dded0fd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataAbstractSubCommand.java
+++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataAbstractSubCommand.java
@@ -17,9 +17,6 @@
 
 package org.apache.ignite.internal.commandline.meta.subcommands;
 
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
 import java.nio.file.FileSystem;
 import java.nio.file.FileSystems;
 import java.util.Collection;
@@ -123,23 +120,4 @@ public abstract class MetadataAbstractSubCommand<
     protected String printInt(int val) {
         return "0x" + Integer.toHexString(val).toUpperCase() + " (" + val + ')';
     }
-
-    /**
-     *
-     */
-    public static class VoidDto extends IgniteDataTransferObject {
-        /** */
-        private static final long serialVersionUID = 0L;
-
-        /** {@inheritDoc} */
-        @Override protected void writeExternalData(ObjectOutput out) throws IOException {
-            // No-op.
-        }
-
-        /** {@inheritDoc} */
-        @Override protected void readExternalData(byte protoVer, ObjectInput in)
-            throws IOException, ClassNotFoundException {
-            // No-op.
-        }
-    }
 }
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataDetailsCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataDetailsCommand.java
similarity index 96%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataDetailsCommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataDetailsCommand.java
index 4c919c0..c310267 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataDetailsCommand.java
+++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataDetailsCommand.java
@@ -25,6 +25,7 @@ import java.util.stream.Collectors;
 import org.apache.ignite.internal.binary.BinaryMetadata;
 import org.apache.ignite.internal.binary.BinaryUtils;
 import org.apache.ignite.internal.commandline.CommandArgIterator;
+import org.apache.ignite.internal.commandline.meta.MetadataCommand;
 import org.apache.ignite.internal.commandline.meta.MetadataSubCommandsList;
 import org.apache.ignite.internal.commandline.meta.tasks.MetadataInfoTask;
 import org.apache.ignite.internal.commandline.meta.tasks.MetadataListResult;
@@ -44,7 +45,7 @@ public class MetadataDetailsCommand
 
     /** {@inheritDoc} */
     @Override public MetadataTypeArgs parseArguments0(CommandArgIterator argIter) {
-        return MetadataTypeArgs.parseArguments(argIter);
+        return MetadataCommand.parseArgs(argIter);
     }
 
     /** {@inheritDoc} */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataHelpCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataHelpCommand.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataHelpCommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataHelpCommand.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataListCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataListCommand.java
similarity index 95%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataListCommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataListCommand.java
index a559f12..0325cce 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataListCommand.java
+++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataListCommand.java
@@ -26,7 +26,7 @@ import org.apache.ignite.internal.commandline.meta.tasks.MetadataListResult;
 
 /** */
 public class MetadataListCommand
-    extends MetadataAbstractSubCommand<MetadataAbstractSubCommand.VoidDto, MetadataListResult>
+    extends MetadataAbstractSubCommand<VoidDto, MetadataListResult>
 {
     /** {@inheritDoc} */
     @Override protected String taskName() {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataRemoveCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataRemoveCommand.java
similarity index 96%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataRemoveCommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataRemoveCommand.java
index 0e2929b..7d4b0e6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataRemoveCommand.java
+++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataRemoveCommand.java
@@ -25,6 +25,7 @@ import java.util.logging.Logger;
 import org.apache.ignite.internal.binary.BinaryMetadata;
 import org.apache.ignite.internal.commandline.CommandArgIterator;
 import org.apache.ignite.internal.commandline.CommandLogger;
+import org.apache.ignite.internal.commandline.meta.MetadataCommand;
 import org.apache.ignite.internal.commandline.meta.MetadataSubCommandsList;
 import org.apache.ignite.internal.commandline.meta.tasks.MetadataMarshalled;
 import org.apache.ignite.internal.commandline.meta.tasks.MetadataRemoveTask;
@@ -56,7 +57,7 @@ public class MetadataRemoveCommand
     @Override public MetadataTypeArgs parseArguments0(CommandArgIterator argIter) {
         outFile = null;
 
-        MetadataTypeArgs argType = MetadataTypeArgs.parseArguments(argIter);
+        MetadataTypeArgs argType = MetadataCommand.parseArgs(argIter);
 
         while (argIter.hasNextSubArg() && outFile == null) {
             String opt = argIter.nextArg("");
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataUpdateCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataUpdateCommand.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataUpdateCommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataUpdateCommand.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/query/KillCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/query/KillCommand.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/query/KillCommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/query/KillCommand.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/query/KillSubcommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/query/KillSubcommand.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/query/KillSubcommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/query/KillSubcommand.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/snapshot/SnapshotCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/snapshot/SnapshotCommand.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/snapshot/SnapshotCommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/snapshot/SnapshotCommand.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/snapshot/SnapshotSubcommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/snapshot/SnapshotSubcommand.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/snapshot/SnapshotSubcommand.java
rename to modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/snapshot/SnapshotSubcommand.java
diff --git a/modules/control-utility/src/main/resources/META-INF/classnames.properties b/modules/control-utility/src/main/resources/META-INF/classnames.properties
new file mode 100644
index 0000000..a49d17a
--- /dev/null
+++ b/modules/control-utility/src/main/resources/META-INF/classnames.properties
@@ -0,0 +1,27 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+org.apache.ignite.internal.commandline.Command
+org.apache.ignite.internal.commandline.OutputFormat
+org.apache.ignite.internal.commandline.baseline.AutoAdjustCommandArg
+org.apache.ignite.internal.commandline.baseline.BaselineCommand
+org.apache.ignite.internal.commandline.cache.CacheCommand
+org.apache.ignite.internal.commandline.cache.argument.DistributionCommandArg
+org.apache.ignite.internal.commandline.cache.argument.FindAndDeleteGarbageArg
+org.apache.ignite.internal.commandline.cache.argument.IdleVerifyCommandArg
+org.apache.ignite.internal.commandline.cache.argument.ListCommandArg
+org.apache.ignite.internal.commandline.cache.argument.ValidateIndexesCommandArg
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/commandline/CommandHandlerParsingTest.java b/modules/control-utility/src/test/java/org/apache/ignite/internal/commandline/CommandHandlerParsingTest.java
similarity index 100%
rename from modules/core/src/test/java/org/apache/ignite/internal/commandline/CommandHandlerParsingTest.java
rename to modules/control-utility/src/test/java/org/apache/ignite/internal/commandline/CommandHandlerParsingTest.java
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/security/GridCommandHandlerSslWithSecurityTest.java b/modules/control-utility/src/test/java/org/apache/ignite/internal/processors/security/GridCommandHandlerSslWithSecurityTest.java
similarity index 77%
rename from modules/core/src/test/java/org/apache/ignite/internal/processors/security/GridCommandHandlerSslWithSecurityTest.java
rename to modules/control-utility/src/test/java/org/apache/ignite/internal/processors/security/GridCommandHandlerSslWithSecurityTest.java
index 0849b1f..18a60ca 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/security/GridCommandHandlerSslWithSecurityTest.java
+++ b/modules/control-utility/src/test/java/org/apache/ignite/internal/processors/security/GridCommandHandlerSslWithSecurityTest.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.internal.processors.security;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.ignite.configuration.ConnectorConfiguration;
@@ -47,11 +48,22 @@ public class GridCommandHandlerSslWithSecurityTest extends GridCommonAbstractTes
     private final String pwd = "testPwd";
 
     /** {@inheritDoc} */
+    @Override protected void afterTest() throws Exception {
+        super.afterTest();
+
+        stopAllGrids();
+    }
+
+    /** {@inheritDoc} */
     @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
         return super.getConfiguration(igniteInstanceName)
             .setPluginProviders(new TestSecurityPluginProvider(login, pwd, ALLOW_ALL, null, false))
             .setSslContextFactory(sslTrustedFactory("node01", "trustone"))
-            .setConnectorConfiguration(new ConnectorConfiguration().setSslEnabled(true));
+            .setConnectorConfiguration(
+                new ConnectorConfiguration()
+                    .setSslEnabled(true)
+                    .setSslFactory(sslTrustedFactory("connectorServer", "trustthree"))
+            );
     }
 
     /**
@@ -100,13 +112,36 @@ public class GridCommandHandlerSslWithSecurityTest extends GridCommonAbstractTes
         args.add(login);
 
         args.add("--keystore");
-        args.add(keyStorePath("node01"));
+        args.add(keyStorePath("connectorServer"));
 
         args.add("--truststore");
-        args.add(keyStorePath("trustone"));
+        args.add(keyStorePath("trustthree"));
 
         assertEquals(EXIT_CODE_OK, cmd.execute(args));
         assertEquals(1, keyStorePwdCnt.get());
         assertEquals(1, trustStorePwdCnt.get());
     }
+
+    /**
+     * Checks that control.sh script can connect to the cluster, that has SSL enabled.
+     */
+    @Test
+    public void testConnector() throws Exception {
+        IgniteEx crd = startGrid();
+
+        crd.cluster().active(true);
+
+        CommandHandler hnd = new CommandHandler();
+
+        int exitCode = hnd.execute(Arrays.asList(
+            "--state",
+            "--user", login,
+            "--password", pwd,
+            "--keystore", keyStorePath("connectorClient"),
+            "--keystore-password", keyStorePassword(),
+            "--truststore", keyStorePath("trustthree"),
+            "--truststore-password", keyStorePassword()));
+
+        assertEquals(EXIT_CODE_OK, exitCode);
+    }
 }
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheWithIndexingAndPersistenceTestSuite.java b/modules/control-utility/src/test/java/org/apache/ignite/testsuites/IgniteControlUtilityTestSuite.java
similarity index 59%
copy from modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheWithIndexingAndPersistenceTestSuite.java
copy to modules/control-utility/src/test/java/org/apache/ignite/testsuites/IgniteControlUtilityTestSuite.java
index c5369f5..7a57771 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheWithIndexingAndPersistenceTestSuite.java
+++ b/modules/control-utility/src/test/java/org/apache/ignite/testsuites/IgniteControlUtilityTestSuite.java
@@ -1,12 +1,12 @@
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
+ * contributor license agreements. See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
+ * the License. You may obtain a copy of the License at
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -17,24 +17,40 @@
 
 package org.apache.ignite.testsuites;
 
-import org.apache.ignite.internal.processors.cache.StartCachesInParallelTest;
-import org.apache.ignite.internal.processors.cache.index.IoStatisticsBasicIndexSelfTest;
+import org.apache.ignite.internal.commandline.CommandHandlerParsingTest;
+import org.apache.ignite.internal.processors.security.GridCommandHandlerSslWithSecurityTest;
 import org.apache.ignite.util.GridCommandHandlerBrokenIndexTest;
 import org.apache.ignite.util.GridCommandHandlerCheckIndexesInlineSizeTest;
+import org.apache.ignite.util.GridCommandHandlerClusterByClassTest;
+import org.apache.ignite.util.GridCommandHandlerClusterByClassWithSSLTest;
 import org.apache.ignite.util.GridCommandHandlerIndexingCheckSizeTest;
 import org.apache.ignite.util.GridCommandHandlerIndexingClusterByClassTest;
 import org.apache.ignite.util.GridCommandHandlerIndexingClusterByClassWithSSLTest;
 import org.apache.ignite.util.GridCommandHandlerIndexingTest;
 import org.apache.ignite.util.GridCommandHandlerIndexingWithSSLTest;
 import org.apache.ignite.util.GridCommandHandlerMetadataTest;
+import org.apache.ignite.util.GridCommandHandlerSslTest;
+import org.apache.ignite.util.GridCommandHandlerTest;
+import org.apache.ignite.util.GridCommandHandlerWithSSLTest;
+import org.apache.ignite.util.KillCommandsCommandShTest;
 import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
 
 /**
- * Cache tests using indexing.
+ * Test suite for control utility.
  */
 @RunWith(Suite.class)
 @Suite.SuiteClasses({
+    CommandHandlerParsingTest.class,
+
+    GridCommandHandlerTest.class,
+    GridCommandHandlerWithSSLTest.class,
+    GridCommandHandlerClusterByClassTest.class,
+    GridCommandHandlerClusterByClassWithSSLTest.class,
+    GridCommandHandlerSslTest.class,
+
+    GridCommandHandlerSslWithSecurityTest.class,
+
     GridCommandHandlerBrokenIndexTest.class,
     GridCommandHandlerIndexingTest.class,
     GridCommandHandlerIndexingWithSSLTest.class,
@@ -42,9 +58,9 @@ import org.junit.runners.Suite;
     GridCommandHandlerIndexingClusterByClassWithSSLTest.class,
     GridCommandHandlerIndexingCheckSizeTest.class,
     GridCommandHandlerCheckIndexesInlineSizeTest.class,
-    StartCachesInParallelTest.class,
-    IoStatisticsBasicIndexSelfTest.class,
-    GridCommandHandlerMetadataTest.class
+    GridCommandHandlerMetadataTest.class,
+
+    KillCommandsCommandShTest.class,
 })
-public class IgniteCacheWithIndexingAndPersistenceTestSuite {
+public class IgniteControlUtilityTestSuite {
 }
diff --git a/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpiTestSuite2.java b/modules/control-utility/src/test/java/org/apache/ignite/testsuites/ZookeeperIgniteControlUtilityTestSuite.java
similarity index 58%
copy from modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpiTestSuite2.java
copy to modules/control-utility/src/test/java/org/apache/ignite/testsuites/ZookeeperIgniteControlUtilityTestSuite.java
index 1d2ffac..8cdf865 100644
--- a/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpiTestSuite2.java
+++ b/modules/control-utility/src/test/java/org/apache/ignite/testsuites/ZookeeperIgniteControlUtilityTestSuite.java
@@ -1,12 +1,12 @@
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
+ * contributor license agreements. See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
+ * the License. You may obtain a copy of the License at
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -15,12 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.ignite.spi.discovery.zk;
+package org.apache.ignite.testsuites;
 
-import org.apache.ignite.internal.IgniteClientReconnectCacheTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedMultiNodeFullApiSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedNodeRestartTest;
-import org.apache.ignite.internal.processors.cache.distributed.replicated.GridCacheReplicatedMultiNodeFullApiSelfTest;
+import org.apache.ignite.spi.discovery.zk.ZookeeperDiscoverySpiTestConfigurator;
 import org.apache.ignite.util.GridCommandHandlerClusterByClassTest;
 import org.apache.ignite.util.GridCommandHandlerTest;
 import org.junit.BeforeClass;
@@ -32,15 +29,10 @@ import org.junit.runners.Suite;
  */
 @RunWith(Suite.class)
 @Suite.SuiteClasses({
-    GridCachePartitionedNodeRestartTest.class,
-    IgniteCacheEntryListenerWithZkDiscoAtomicTest.class,
-    IgniteClientReconnectCacheTest.class,
-    GridCachePartitionedMultiNodeFullApiSelfTest.class,
-    GridCacheReplicatedMultiNodeFullApiSelfTest.class,
     GridCommandHandlerTest.class,
     GridCommandHandlerClusterByClassTest.class
 })
-public class ZookeeperDiscoverySpiTestSuite2 {
+public class ZookeeperIgniteControlUtilityTestSuite {
     /**
      * @throws Exception Thrown in case of the failure.
      */
diff --git a/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerAbstractTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerAbstractTest.java
similarity index 100%
rename from modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerAbstractTest.java
rename to modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerAbstractTest.java
diff --git a/modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerBrokenIndexTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerBrokenIndexTest.java
similarity index 100%
rename from modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerBrokenIndexTest.java
rename to modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerBrokenIndexTest.java
diff --git a/modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerCheckIndexesInlineSizeTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerCheckIndexesInlineSizeTest.java
similarity index 100%
rename from modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerCheckIndexesInlineSizeTest.java
rename to modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerCheckIndexesInlineSizeTest.java
diff --git a/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterByClassAbstractTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterByClassAbstractTest.java
similarity index 100%
rename from modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterByClassAbstractTest.java
rename to modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterByClassAbstractTest.java
diff --git a/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterByClassTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterByClassTest.java
similarity index 100%
rename from modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterByClassTest.java
rename to modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterByClassTest.java
diff --git a/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterByClassWithSSLTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterByClassWithSSLTest.java
similarity index 100%
rename from modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterByClassWithSSLTest.java
rename to modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterByClassWithSSLTest.java
diff --git a/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterPerMethodAbstractTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterPerMethodAbstractTest.java
similarity index 100%
rename from modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterPerMethodAbstractTest.java
rename to modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterPerMethodAbstractTest.java
diff --git a/modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingCheckSizeTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingCheckSizeTest.java
similarity index 100%
rename from modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingCheckSizeTest.java
rename to modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingCheckSizeTest.java
diff --git a/modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingClusterByClassTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingClusterByClassTest.java
similarity index 100%
rename from modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingClusterByClassTest.java
rename to modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingClusterByClassTest.java
diff --git a/modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingClusterByClassWithSSLTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingClusterByClassWithSSLTest.java
similarity index 100%
rename from modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingClusterByClassWithSSLTest.java
rename to modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingClusterByClassWithSSLTest.java
diff --git a/modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingTest.java
similarity index 100%
rename from modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingTest.java
rename to modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingTest.java
diff --git a/modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingUtils.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingUtils.java
similarity index 100%
rename from modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingUtils.java
rename to modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingUtils.java
diff --git a/modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingWithSSLTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingWithSSLTest.java
similarity index 100%
rename from modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingWithSSLTest.java
rename to modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingWithSSLTest.java
diff --git a/modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerMetadataTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerMetadataTest.java
similarity index 100%
rename from modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerMetadataTest.java
rename to modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerMetadataTest.java
diff --git a/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerSslTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerSslTest.java
similarity index 100%
rename from modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerSslTest.java
rename to modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerSslTest.java
diff --git a/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java
similarity index 97%
rename from modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java
rename to modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java
index 789cc45..da34877 100644
--- a/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java
+++ b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java
@@ -64,6 +64,7 @@ import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.TestRecordingCommunicationSpi;
 import org.apache.ignite.internal.client.util.GridConcurrentHashSet;
 import org.apache.ignite.internal.commandline.CommandHandler;
+import org.apache.ignite.internal.commandline.cache.argument.FindAndDeleteGarbageArg;
 import org.apache.ignite.internal.managers.communication.GridIoMessage;
 import org.apache.ignite.internal.pagemem.wal.record.DataEntry;
 import org.apache.ignite.internal.processors.cache.CacheObjectImpl;
@@ -78,6 +79,7 @@ import org.apache.ignite.internal.processors.cache.distributed.near.GridNearLock
 import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxFinishRequest;
 import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal;
 import org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager;
+import org.apache.ignite.internal.processors.cache.persistence.db.IgniteCacheGroupsWithRestartsTest;
 import org.apache.ignite.internal.processors.cache.persistence.diagnostic.pagelocktracker.dumpprocessors.ToFileDumpProcessor;
 import org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
 import org.apache.ignite.internal.processors.cache.transactions.IgniteTxEntry;
@@ -89,6 +91,7 @@ import org.apache.ignite.internal.util.typedef.G;
 import org.apache.ignite.internal.util.typedef.T2;
 import org.apache.ignite.internal.util.typedef.X;
 import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.visor.cache.VisorFindAndDeleteGarbageInPersistenceTaskResult;
 import org.apache.ignite.internal.visor.tx.VisorTxInfo;
 import org.apache.ignite.internal.visor.tx.VisorTxTaskResult;
 import org.apache.ignite.lang.IgniteBiPredicate;
@@ -121,6 +124,7 @@ import static org.apache.ignite.internal.commandline.CommandHandler.EXIT_CODE_OK
 import static org.apache.ignite.internal.commandline.CommandHandler.EXIT_CODE_UNEXPECTED_ERROR;
 import static org.apache.ignite.internal.commandline.CommandList.DEACTIVATE;
 import static org.apache.ignite.internal.encryption.AbstractEncryptionTest.MASTER_KEY_NAME_2;
+import static org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.IGNITE_PDS_SKIP_CHECKPOINT_ON_NODE_STOP;
 import static org.apache.ignite.internal.processors.cache.persistence.snapshot.AbstractSnapshotSelfTest.doSnapshotCancellationTest;
 import static org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotManager.SNAPSHOT_METRICS;
 import static org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotManager.resolveSnapshotWorkDirectory;
@@ -2166,4 +2170,35 @@ public class GridCommandHandlerTest extends GridCommandHandlerClusterPerMethodAb
         doSnapshotCancellationTest(startCli, Collections.singletonList(srv), startCli.cache(DEFAULT_CACHE_NAME),
             snpName -> assertEquals(EXIT_CODE_OK, execute(h, "--snapshot", "cancel", snpName)));
     }
+
+    /**
+     * @throws Exception If failed.
+     */
+    @Test
+    @WithSystemProperty(key = IGNITE_PDS_SKIP_CHECKPOINT_ON_NODE_STOP, value = "true")
+    public void testCleaningGarbageAfterCacheDestroyedAndNodeStop_ControlConsoleUtil() throws Exception {
+        new IgniteCacheGroupsWithRestartsTest().testFindAndDeleteGarbage(this::executeTaskViaControlConsoleUtil);
+    }
+
+    /**
+     * @param ignite Ignite to execute task on.
+     * @param delFoundGarbage If clearing mode should be used.
+     * @return Result of task run.
+     */
+    private VisorFindAndDeleteGarbageInPersistenceTaskResult executeTaskViaControlConsoleUtil(
+        IgniteEx ignite,
+        boolean delFoundGarbage
+    ) {
+        CommandHandler hnd = new CommandHandler();
+
+        List<String> args = new ArrayList<>(Arrays.asList("--yes", "--port", "11212", "--cache", "find_garbage",
+            ignite.localNode().id().toString()));
+
+        if (delFoundGarbage)
+            args.add(FindAndDeleteGarbageArg.DELETE.argName());
+
+        hnd.execute(args);
+
+        return hnd.getLastOperationResult();
+    }
 }
diff --git a/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerTestUtils.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTestUtils.java
similarity index 100%
rename from modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerTestUtils.java
rename to modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTestUtils.java
diff --git a/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerWithSSLTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerWithSSLTest.java
similarity index 100%
rename from modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerWithSSLTest.java
rename to modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerWithSSLTest.java
diff --git a/modules/indexing/src/test/java/org/apache/ignite/util/KillCommandsCommandShTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/KillCommandsCommandShTest.java
similarity index 100%
rename from modules/indexing/src/test/java/org/apache/ignite/util/KillCommandsCommandShTest.java
rename to modules/control-utility/src/test/java/org/apache/ignite/util/KillCommandsCommandShTest.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/check_indexes_inline_size/CheckIndexInlineSizesTask.java b/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/check_indexes_inline_size/CheckIndexInlineSizesTask.java
index 7f53ff2..dfa639e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/check_indexes_inline_size/CheckIndexInlineSizesTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/check_indexes_inline_size/CheckIndexInlineSizesTask.java
@@ -21,14 +21,13 @@ import java.util.List;
 import java.util.Map;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.compute.ComputeJobResult;
-import org.apache.ignite.internal.commandline.cache.CheckIndexInlineSizes;
 import org.apache.ignite.internal.processors.task.GridInternal;
 import org.apache.ignite.internal.visor.VisorJob;
 import org.apache.ignite.internal.visor.VisorMultiNodeTask;
 import org.jetbrains.annotations.Nullable;
 
 /**
- * Task for {@link CheckIndexInlineSizes} command.
+ * Task for check secondary indexes inline size on the different nodes.
  */
 @GridInternal
 public class CheckIndexInlineSizesTask extends VisorMultiNodeTask<Void, CheckIndexInlineSizesResult, CheckIndexInlineSizesResult> {
@@ -71,7 +70,7 @@ public class CheckIndexInlineSizesTask extends VisorMultiNodeTask<Void, CheckInd
     }
 
     /**
-     * Job for {@link CheckIndexInlineSizes} command.
+     * Job for check secondary indexes inline size on the different nodes.
      */
     private static class CheckIndexInlineSizesJob extends VisorJob<Void, CheckIndexInlineSizesResult> {
         /** */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/baseline/AutoAdjustCommandArg.java b/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/VoidDto.java
similarity index 57%
rename from modules/core/src/main/java/org/apache/ignite/internal/commandline/baseline/AutoAdjustCommandArg.java
rename to modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/VoidDto.java
index 7ccc104..abe0b51 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/commandline/baseline/AutoAdjustCommandArg.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/VoidDto.java
@@ -15,36 +15,28 @@
  * limitations under the License.
  */
 
-package org.apache.ignite.internal.commandline.baseline;
+package org.apache.ignite.internal.commandline.meta.subcommands;
 
-import org.apache.ignite.internal.commandline.argument.CommandArg;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import org.apache.ignite.internal.dto.IgniteDataTransferObject;
 
 /**
- * {@link BaselineSubcommands#AUTO_ADJUST} command arguments.
+ *
  */
-public enum AutoAdjustCommandArg implements CommandArg {
-    /** Enable auto-adjust. */
-    ENABLE("enable"),
-    /** Disable auto-adjust. */
-    DISABLE("disable"),
-    /** Set soft timeout. */
-    TIMEOUT("timeout");
-
-    /** Option name. */
-    private final String name;
-
+public class VoidDto extends IgniteDataTransferObject {
     /** */
-    AutoAdjustCommandArg(String name) {
-        this.name = name;
-    }
+    private static final long serialVersionUID = 0L;
 
     /** {@inheritDoc} */
-    @Override public String argName() {
-        return name;
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        // No-op.
     }
 
     /** {@inheritDoc} */
-    @Override public String toString() {
-        return name;
+    @Override protected void readExternalData(byte protoVer, ObjectInput in)
+        throws IOException, ClassNotFoundException {
+        // No-op.
     }
 }
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/tasks/MetadataInfoTask.java b/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/tasks/MetadataInfoTask.java
index e7a28b5..f543921 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/tasks/MetadataInfoTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/tasks/MetadataInfoTask.java
@@ -21,9 +21,6 @@ import java.util.Collections;
 import java.util.List;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.compute.ComputeJobResult;
-import org.apache.ignite.internal.commandline.cache.CheckIndexInlineSizes;
-import org.apache.ignite.internal.commandline.meta.subcommands.MetadataDetailsCommand;
-import org.apache.ignite.internal.commandline.meta.subcommands.MetadataListCommand;
 import org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl;
 import org.apache.ignite.internal.processors.task.GridInternal;
 import org.apache.ignite.internal.visor.VisorJob;
@@ -31,7 +28,7 @@ import org.apache.ignite.internal.visor.VisorMultiNodeTask;
 import org.jetbrains.annotations.Nullable;
 
 /**
- * Task for {@link MetadataListCommand} and {@link MetadataDetailsCommand} commands.
+ * Task for getting binary metadata.
  */
 @GridInternal
 public class MetadataInfoTask extends VisorMultiNodeTask<MetadataTypeArgs, MetadataListResult, MetadataListResult> {
@@ -58,7 +55,7 @@ public class MetadataInfoTask extends VisorMultiNodeTask<MetadataTypeArgs, Metad
     }
 
     /**
-     * Job for {@link CheckIndexInlineSizes} command.
+     * Job for getting binary metadata.
      */
     private static class MetadataListJob extends VisorJob<MetadataTypeArgs, MetadataListResult> {
         /** */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/tasks/MetadataRemoveTask.java b/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/tasks/MetadataRemoveTask.java
index 5bd7b7a..f7de2ca 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/tasks/MetadataRemoveTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/tasks/MetadataRemoveTask.java
@@ -25,7 +25,6 @@ import org.apache.ignite.compute.ComputeJobContext;
 import org.apache.ignite.compute.ComputeJobResult;
 import org.apache.ignite.internal.IgniteEx;
 import org.apache.ignite.internal.binary.BinaryMetadata;
-import org.apache.ignite.internal.commandline.cache.CheckIndexInlineSizes;
 import org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl;
 import org.apache.ignite.internal.processors.task.GridInternal;
 import org.apache.ignite.internal.util.typedef.internal.U;
@@ -40,7 +39,7 @@ import org.apache.ignite.resources.JobContextResource;
 import org.jetbrains.annotations.Nullable;
 
 /**
- * Task for {@link MetadataRemoveTask} command.
+ * Task for remove specified binary type.
  */
 @GridInternal
 public class MetadataRemoveTask extends VisorMultiNodeTask<MetadataTypeArgs, MetadataMarshalled, MetadataMarshalled> {
@@ -64,7 +63,7 @@ public class MetadataRemoveTask extends VisorMultiNodeTask<MetadataTypeArgs, Met
     }
 
     /**
-     * Job for {@link CheckIndexInlineSizes} command.
+     * Job for remove specified binary type from.
      */
     private static class MetadataRemoveJob extends VisorJob<MetadataTypeArgs, MetadataMarshalled> {
         /** */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/tasks/MetadataTypeArgs.java b/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/tasks/MetadataTypeArgs.java
index b57ca3f..05f8139 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/tasks/MetadataTypeArgs.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/tasks/MetadataTypeArgs.java
@@ -21,7 +21,6 @@ import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.internal.commandline.CommandArgIterator;
 import org.apache.ignite.internal.dto.IgniteDataTransferObject;
 import org.apache.ignite.internal.util.typedef.internal.U;
 
@@ -90,38 +89,6 @@ public class MetadataTypeArgs extends IgniteDataTransferObject {
             typeId = in.readInt();
     }
 
-    /**
-     * @param argIter Command line arguments iterator.
-     * @return Metadata type argument.
-     */
-    public static MetadataTypeArgs parseArguments(CommandArgIterator argIter) {
-        String typeName = null;
-        Integer typeId = null;
-
-        while (argIter.hasNextSubArg() && typeName == null && typeId == null) {
-            String optName = argIter.nextArg("Expecting " + TYPE_NAME + " or " + TYPE_ID);
-
-            switch (optName) {
-                case TYPE_NAME:
-                    typeName = argIter.nextArg("type name");
-
-                    break;
-
-                case TYPE_ID:
-                    typeId = argIter.nextIntArg("typeId");
-
-                    break;
-            }
-        }
-
-        if (typeName == null && typeId == null) {
-            throw new IllegalArgumentException("Type to remove is not specified. " +
-                "Please add one of the options: --typeName <type_name> or --typeId <type_id>");
-        }
-
-        return new MetadataTypeArgs(typeName, typeId);
-    }
-
     /** {@inheritDoc} */
     @Override public String toString() {
         return typeId != null ? "0x" + Integer.toHexString(typeId).toUpperCase() : typeName;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/tasks/MetadataUpdateTask.java b/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/tasks/MetadataUpdateTask.java
index a8dfa68..1e745df 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/tasks/MetadataUpdateTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/commandline/meta/tasks/MetadataUpdateTask.java
@@ -23,8 +23,6 @@ import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.compute.ComputeJobResult;
 import org.apache.ignite.internal.binary.BinaryMetadata;
-import org.apache.ignite.internal.commandline.cache.CheckIndexInlineSizes;
-import org.apache.ignite.internal.commandline.meta.subcommands.MetadataUpdateCommand;
 import org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl;
 import org.apache.ignite.internal.processors.task.GridInternal;
 import org.apache.ignite.internal.util.typedef.internal.U;
@@ -34,7 +32,7 @@ import org.apache.ignite.plugin.security.SecurityPermission;
 import org.jetbrains.annotations.Nullable;
 
 /**
- * Task for {@link MetadataUpdateCommand} command.
+ * Task for update specified binary type.
  */
 @GridInternal
 public class MetadataUpdateTask extends VisorMultiNodeTask<MetadataMarshalled, MetadataMarshalled, MetadataMarshalled> {
@@ -58,7 +56,7 @@ public class MetadataUpdateTask extends VisorMultiNodeTask<MetadataMarshalled, M
     }
 
     /**
-     * Job for {@link CheckIndexInlineSizes} command.
+     * Job for update specified binary type.
      */
     private static class MetadataUpdateJob extends VisorJob<MetadataMarshalled, MetadataMarshalled> {
         /** */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/verify/IdleVerifyResultV2.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/verify/IdleVerifyResultV2.java
index 5d2a5d3..363266e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/verify/IdleVerifyResultV2.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/verify/IdleVerifyResultV2.java
@@ -37,14 +37,12 @@ import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.internal.visor.VisorDataTransferObject;
 import org.jetbrains.annotations.Nullable;
 
-import static org.apache.ignite.internal.commandline.cache.CacheSubcommands.IDLE_VERIFY;
-
 /**
  * Encapsulates result of {@link VerifyBackupPartitionsTaskV2}.
  */
 public class IdleVerifyResultV2 extends VisorDataTransferObject {
     /** */
-    public static final String IDLE_VERIFY_FILE_PREFIX = IDLE_VERIFY + "-";
+    public static final String IDLE_VERIFY_FILE_PREFIX = "idle_verify-";
 
     /** Time formatter for log file name. */
     private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH-mm-ss_SSS");
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/verify/VerifyBackupPartitionsDumpTask.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/verify/VerifyBackupPartitionsDumpTask.java
index 0973b89..38cf342 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/verify/VerifyBackupPartitionsDumpTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/verify/VerifyBackupPartitionsDumpTask.java
@@ -28,6 +28,7 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
+import java.util.function.Consumer;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.IgniteLogger;
@@ -38,6 +39,7 @@ import org.apache.ignite.compute.ComputeJobResultPolicy;
 import org.apache.ignite.compute.ComputeTaskAdapter;
 import org.apache.ignite.internal.processors.task.GridInternal;
 import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.SB;
 import org.apache.ignite.internal.visor.verify.VisorIdleVerifyDumpTaskArg;
 import org.apache.ignite.internal.visor.verify.VisorIdleVerifyTaskArg;
 import org.apache.ignite.resources.IgniteInstanceResource;
@@ -45,8 +47,6 @@ import org.apache.ignite.resources.LoggerResource;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
-import static org.apache.ignite.internal.commandline.cache.IdleVerify.logParsedArgs;
-
 /**
  * Task for collection checksums primary and backup partitions of specified caches. <br> Argument: Set of cache names,
  * 'null' will trigger verification for all caches. <br> Result: {@link IdleVerifyDumpResult} with all found partitions.
@@ -276,4 +276,26 @@ public class VerifyBackupPartitionsDumpTask extends ComputeTaskAdapter<VisorIdle
             return Integer.compare(o1.partitionId(), o2.partitionId());
         };
     }
+
+    /**
+     * Passes idle_verify parsed arguments to given log consumer.
+     *
+     * @param args idle_verify arguments.
+     * @param logConsumer Logger.
+     */
+    public static void logParsedArgs(VisorIdleVerifyTaskArg args, Consumer<String> logConsumer) {
+        SB options = new SB("idle_verify task was executed with the following args: ");
+
+        options
+            .a("caches=[")
+            .a(args.caches() == null ? "" : String.join(", ", args.caches()))
+            .a("], excluded=[")
+            .a(args.excludeCaches() == null ? "" : String.join(", ", args.excludeCaches()))
+            .a("]")
+            .a(", cacheFilter=[")
+            .a(args.cacheFilterEnum().toString())
+            .a("]\n");
+
+        logConsumer.accept(options.toString());
+    }
 }
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/encryption/VisorChangeMasterKeyTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/encryption/VisorChangeMasterKeyTask.java
index c79f07a..ffd1740 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/encryption/VisorChangeMasterKeyTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/encryption/VisorChangeMasterKeyTask.java
@@ -19,7 +19,6 @@ package org.apache.ignite.internal.visor.encryption;
 
 import org.apache.ignite.IgniteEncryption;
 import org.apache.ignite.IgniteException;
-import org.apache.ignite.internal.commandline.encryption.EncryptionCommand;
 import org.apache.ignite.internal.processors.task.GridInternal;
 import org.apache.ignite.internal.visor.VisorJob;
 import org.apache.ignite.internal.visor.VisorOneNodeTask;
@@ -27,7 +26,6 @@ import org.apache.ignite.internal.visor.VisorOneNodeTask;
 /**
  * The task for changing the master key.
  *
- * @see EncryptionCommand
  * @see IgniteEncryption#changeMasterKey(String)
  */
 @GridInternal
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/encryption/VisorGetMasterKeyNameTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/encryption/VisorGetMasterKeyNameTask.java
index d572861..6da5736 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/encryption/VisorGetMasterKeyNameTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/encryption/VisorGetMasterKeyNameTask.java
@@ -19,7 +19,6 @@ package org.apache.ignite.internal.visor.encryption;
 
 import org.apache.ignite.IgniteEncryption;
 import org.apache.ignite.IgniteException;
-import org.apache.ignite.internal.commandline.encryption.EncryptionCommand;
 import org.apache.ignite.internal.processors.task.GridInternal;
 import org.apache.ignite.internal.visor.VisorJob;
 import org.apache.ignite.internal.visor.VisorOneNodeTask;
@@ -27,7 +26,6 @@ import org.apache.ignite.internal.visor.VisorOneNodeTask;
 /**
  * The task for getting the master key name.
  *
- * @see EncryptionCommand
  * @see IgniteEncryption#getMasterKeyName()
  */
 @GridInternal
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/snapshot/VisorSnapshotCancelTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/snapshot/VisorSnapshotCancelTask.java
index b894e49..217ce66 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/snapshot/VisorSnapshotCancelTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/snapshot/VisorSnapshotCancelTask.java
@@ -19,14 +19,12 @@ package org.apache.ignite.internal.visor.snapshot;
 
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.IgniteSnapshot;
-import org.apache.ignite.internal.commandline.snapshot.SnapshotCommand;
 import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotMXBeanImpl;
 import org.apache.ignite.internal.processors.task.GridInternal;
 import org.apache.ignite.internal.visor.VisorJob;
 import org.apache.ignite.internal.visor.VisorOneNodeTask;
 
 /**
- * @see SnapshotCommand
  * @see IgniteSnapshot#cancelSnapshot(String)
  */
 @GridInternal
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/snapshot/VisorSnapshotCreateTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/snapshot/VisorSnapshotCreateTask.java
index 16fccba..d86ec1b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/snapshot/VisorSnapshotCreateTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/snapshot/VisorSnapshotCreateTask.java
@@ -19,14 +19,12 @@ package org.apache.ignite.internal.visor.snapshot;
 
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.IgniteSnapshot;
-import org.apache.ignite.internal.commandline.snapshot.SnapshotCommand;
 import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotMXBeanImpl;
 import org.apache.ignite.internal.processors.task.GridInternal;
 import org.apache.ignite.internal.visor.VisorJob;
 import org.apache.ignite.internal.visor.VisorOneNodeTask;
 
 /**
- * @see SnapshotCommand
  * @see IgniteSnapshot#createSnapshot(String)
  */
 @GridInternal
diff --git a/modules/core/src/main/resources/META-INF/classnames.properties b/modules/core/src/main/resources/META-INF/classnames.properties
index 1077ad9..e6c873b 100644
--- a/modules/core/src/main/resources/META-INF/classnames.properties
+++ b/modules/core/src/main/resources/META-INF/classnames.properties
@@ -289,6 +289,31 @@ org.apache.ignite.internal.binary.BinarySchema$Confirmation
 org.apache.ignite.internal.binary.BinaryTreeMap
 org.apache.ignite.internal.binary.BinaryWriteMode
 org.apache.ignite.internal.binary.builder.BinaryLazyMap$1$1$1
+org.apache.ignite.internal.commandline.cache.check_indexes_inline_size.CheckIndexInlineSizesResult
+org.apache.ignite.internal.commandline.cache.check_indexes_inline_size.CheckIndexInlineSizesTask
+org.apache.ignite.internal.commandline.cache.check_indexes_inline_size.CheckIndexInlineSizesTask.CheckIndexInlineSizesJob
+org.apache.ignite.internal.commandline.cache.distribution.CacheDistributionGroup
+org.apache.ignite.internal.commandline.cache.distribution.CacheDistributionNode
+org.apache.ignite.internal.commandline.cache.distribution.CacheDistributionPartition
+org.apache.ignite.internal.commandline.cache.distribution.CacheDistributionTask
+org.apache.ignite.internal.commandline.cache.distribution.CacheDistributionTask$CacheDistributionJob
+org.apache.ignite.internal.commandline.cache.distribution.CacheDistributionTaskArg
+org.apache.ignite.internal.commandline.cache.distribution.CacheDistributionTaskResult
+org.apache.ignite.internal.commandline.cache.reset_lost_partitions.CacheResetLostPartitionsTask
+org.apache.ignite.internal.commandline.cache.reset_lost_partitions.CacheResetLostPartitionsTask$CacheResetLostPartitionsJob
+org.apache.ignite.internal.commandline.cache.reset_lost_partitions.CacheResetLostPartitionsTaskArg
+org.apache.ignite.internal.commandline.cache.reset_lost_partitions.CacheResetLostPartitionsTaskResult
+org.apache.ignite.internal.commandline.meta.tasks.MetadataListResult
+org.apache.ignite.internal.commandline.meta.tasks.MetadataInfoTask
+org.apache.ignite.internal.commandline.meta.tasks.MetadataInfoTask.MetadataListJob
+org.apache.ignite.internal.commandline.meta.tasks.MetadataMarshalled
+org.apache.ignite.internal.commandline.meta.tasks.MetadataRemoveTask
+org.apache.ignite.internal.commandline.meta.tasks.MetadataRemoveTask.MetadataRemoveJob
+org.apache.ignite.internal.commandline.meta.tasks.MetadataRemoveTask.DropAllThinSessionsJob
+org.apache.ignite.internal.commandline.meta.tasks.MetadataTypeArgs
+org.apache.ignite.internal.commandline.meta.tasks.MetadataUpdateTask
+org.apache.ignite.internal.commandline.meta.tasks.MetadataUpdateTask.MetadataUpdateJob
+org.apache.ignite.internal.commandline.meta.subcommands.VoidDto
 org.apache.ignite.internal.client.GridClientAuthenticationException
 org.apache.ignite.internal.client.GridClientCacheFlag
 org.apache.ignite.internal.client.GridClientCacheMode
@@ -337,41 +362,6 @@ org.apache.ignite.internal.cluster.IgniteKillTask
 org.apache.ignite.internal.cluster.IgniteKillTask$IgniteKillJob
 org.apache.ignite.internal.cluster.NodeOrderComparator
 org.apache.ignite.internal.cluster.NodeOrderLegacyComparator
-org.apache.ignite.internal.commandline.Command
-org.apache.ignite.internal.commandline.OutputFormat
-org.apache.ignite.internal.commandline.baseline.AutoAdjustCommandArg
-org.apache.ignite.internal.commandline.baseline.BaselineCommand
-org.apache.ignite.internal.commandline.cache.CacheCommand
-org.apache.ignite.internal.commandline.cache.argument.DistributionCommandArg
-org.apache.ignite.internal.commandline.cache.argument.FindAndDeleteGarbageArg
-org.apache.ignite.internal.commandline.cache.argument.IdleVerifyCommandArg
-org.apache.ignite.internal.commandline.cache.argument.ListCommandArg
-org.apache.ignite.internal.commandline.cache.argument.ValidateIndexesCommandArg
-org.apache.ignite.internal.commandline.cache.check_indexes_inline_size.CheckIndexInlineSizesResult
-org.apache.ignite.internal.commandline.cache.check_indexes_inline_size.CheckIndexInlineSizesTask
-org.apache.ignite.internal.commandline.cache.check_indexes_inline_size.CheckIndexInlineSizesTask.CheckIndexInlineSizesJob
-org.apache.ignite.internal.commandline.cache.distribution.CacheDistributionGroup
-org.apache.ignite.internal.commandline.cache.distribution.CacheDistributionNode
-org.apache.ignite.internal.commandline.cache.distribution.CacheDistributionPartition
-org.apache.ignite.internal.commandline.cache.distribution.CacheDistributionTask
-org.apache.ignite.internal.commandline.cache.distribution.CacheDistributionTask$CacheDistributionJob
-org.apache.ignite.internal.commandline.cache.distribution.CacheDistributionTaskArg
-org.apache.ignite.internal.commandline.cache.distribution.CacheDistributionTaskResult
-org.apache.ignite.internal.commandline.cache.reset_lost_partitions.CacheResetLostPartitionsTask
-org.apache.ignite.internal.commandline.cache.reset_lost_partitions.CacheResetLostPartitionsTask$CacheResetLostPartitionsJob
-org.apache.ignite.internal.commandline.cache.reset_lost_partitions.CacheResetLostPartitionsTaskArg
-org.apache.ignite.internal.commandline.cache.reset_lost_partitions.CacheResetLostPartitionsTaskResult
-org.apache.ignite.internal.commandline.meta.subcommands.MetadataAbstractSubCommand.VoidDto
-org.apache.ignite.internal.commandline.meta.tasks.MetadataListResult
-org.apache.ignite.internal.commandline.meta.tasks.MetadataInfoTask
-org.apache.ignite.internal.commandline.meta.tasks.MetadataInfoTask.MetadataListJob
-org.apache.ignite.internal.commandline.meta.tasks.MetadataMarshalled
-org.apache.ignite.internal.commandline.meta.tasks.MetadataRemoveTask
-org.apache.ignite.internal.commandline.meta.tasks.MetadataRemoveTask.MetadataRemoveJob
-org.apache.ignite.internal.commandline.meta.tasks.MetadataRemoveTask.DropAllThinSessionsJob
-org.apache.ignite.internal.commandline.meta.tasks.MetadataTypeArgs
-org.apache.ignite.internal.commandline.meta.tasks.MetadataUpdateTask
-org.apache.ignite.internal.commandline.meta.tasks.MetadataUpdateTask.MetadataUpdateJob
 org.apache.ignite.internal.compute.ComputeTaskCancelledCheckedException
 org.apache.ignite.internal.compute.ComputeTaskTimeoutCheckedException
 org.apache.ignite.internal.direct.DirectMessageReader$1
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/local/GridCacheFastNodeLeftForTransactionTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/local/GridCacheFastNodeLeftForTransactionTest.java
index b10a5b2..25f3067 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/local/GridCacheFastNodeLeftForTransactionTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/local/GridCacheFastNodeLeftForTransactionTest.java
@@ -17,20 +17,12 @@
 
 package org.apache.ignite.internal.processors.cache.local;
 
-import java.io.ByteArrayOutputStream;
-import java.io.OutputStream;
-import java.io.PrintStream;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.atomic.AtomicReference;
-import java.util.logging.Formatter;
-import java.util.logging.Handler;
-import java.util.logging.LogRecord;
-import java.util.logging.Logger;
-import java.util.logging.StreamHandler;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.IgniteLogger;
 import org.apache.ignite.cache.CacheWriteSynchronizationMode;
@@ -39,9 +31,10 @@ import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.configuration.ConnectorConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.IgniteEx;
-import org.apache.ignite.internal.commandline.CommandHandler;
 import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxFinishFuture;
 import org.apache.ignite.internal.processors.cache.transactions.TransactionProxyImpl;
+import org.apache.ignite.internal.processors.cache.verify.IdleVerifyResultV2;
+import org.apache.ignite.internal.util.typedef.internal.SB;
 import org.apache.ignite.testframework.GridTestUtils;
 import org.apache.ignite.testframework.ListeningTestLogger;
 import org.apache.ignite.testframework.LogListener;
@@ -50,8 +43,6 @@ import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 import org.apache.ignite.transactions.Transaction;
 import org.junit.Test;
 
-import static java.util.Arrays.asList;
-import static java.util.Arrays.stream;
 import static java.util.Objects.nonNull;
 import static java.util.function.Function.identity;
 import static java.util.stream.Collectors.toList;
@@ -60,7 +51,6 @@ import static java.util.stream.IntStream.range;
 import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL;
 import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
 import static org.apache.ignite.cache.CacheWriteSynchronizationMode.PRIMARY_SYNC;
-import static org.apache.ignite.internal.commandline.CommandHandler.initLogger;
 import static org.apache.ignite.testframework.GridTestUtils.assertContains;
 import static org.apache.ignite.testframework.GridTestUtils.getFieldValue;
 import static org.apache.ignite.testframework.GridTestUtils.setFieldValue;
@@ -244,51 +234,19 @@ public class GridCacheFastNodeLeftForTransactionTest extends GridCommonAbstractT
 
         assertTrue(logLsnr.check());
 
-        startGrid(stoppedNodeId);
+        IgniteEx stoppedNode = startGrid(stoppedNodeId);
 
         awaitPartitionMapExchange();
 
         checkCacheData(cacheValues, cacheName);
 
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        IdleVerifyResultV2 idleVerifyResV2 = idleVerify(stoppedNode, null);
 
-        PrintStream sysOut = System.out;
+        SB sb = new SB();
 
-        try (PrintStream out = new PrintStream(baos)) {
-            System.setOut(out);
+        idleVerifyResV2.print(sb::a);
 
-            Logger cmdLog = createTestLogger(baos);
-            CommandHandler cmdHnd = new CommandHandler(cmdLog);
-
-            cmdHnd.execute(asList("--cache", "idle_verify"));
-
-            stream(cmdLog.getHandlers()).forEach(Handler::flush);
-
-            assertContains(listeningLog, baos.toString(), "no conflicts have been found");
-        }
-        finally {
-            System.setOut(sysOut);
-        }
-    }
-
-    /**
-     * Creating a logger for a CommandHandler.
-     *
-     * @param outputStream Stream for recording the result of a command.
-     * @return Logger.
-     */
-    private Logger createTestLogger(OutputStream outputStream) {
-        assert nonNull(outputStream);
-
-        Logger log = initLogger(null);
-
-        log.addHandler(new StreamHandler(outputStream, new Formatter() {
-            @Override public String format(LogRecord record) {
-                return record.getMessage() + "\n";
-            }
-        }));
-
-        return log;
+        assertContains(listeningLog, sb.toString(), "no conflicts have been found");
     }
 
     /**
diff --git a/modules/core/src/test/java/org/apache/ignite/ssl/MultipleSSLContextsTest.java b/modules/core/src/test/java/org/apache/ignite/ssl/MultipleSSLContextsTest.java
index 414eb66..2054438 100644
--- a/modules/core/src/test/java/org/apache/ignite/ssl/MultipleSSLContextsTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/ssl/MultipleSSLContextsTest.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.ssl;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -35,13 +34,10 @@ import org.apache.ignite.configuration.ClientConfiguration;
 import org.apache.ignite.configuration.ClientConnectorConfiguration;
 import org.apache.ignite.configuration.ConnectorConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.internal.commandline.CommandHandler;
 import org.apache.ignite.testframework.GridTestUtils;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 import org.junit.Test;
 
-import static org.apache.ignite.internal.commandline.CommandHandler.EXIT_CODE_OK;
-
 /**
  * Test SSL configuration, where certificates for nodes, connectors and client connectors are signed using different
  * trust stores. SSL for all three transports are enabled at the same time.
@@ -227,23 +223,6 @@ public class MultipleSSLContextsTest extends GridCommonAbstractTest {
     }
 
     /**
-     * Checks that control.sh script can connect to the cluster, that has SSL enabled.
-     */
-    @Test
-    public void testConnector() {
-        CommandHandler hnd = new CommandHandler();
-
-        int exitCode = hnd.execute(Arrays.asList(
-            "--state",
-            "--keystore", GridTestUtils.keyStorePath("connectorClient"),
-            "--keystore-password", GridTestUtils.keyStorePassword(),
-            "--truststore", GridTestUtils.keyStorePath("trustthree"),
-            "--truststore-password", GridTestUtils.keyStorePassword()));
-
-        assertEquals(EXIT_CODE_OK, exitCode);
-    }
-
-    /**
      * Checks that the {@code cache} has contents that math the provided map.
      *
      * @param exp A map with expected contents.
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
index 0dde697..807de47 100755
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
@@ -2175,7 +2175,7 @@ public abstract class GridCommonAbstractTest extends GridAbstractTest {
      * @return Conflicts result.
      * @throws IgniteException If none caches or node found.
      */
-    protected IdleVerifyResultV2 idleVerify(Ignite ig, String... caches) {
+    protected IdleVerifyResultV2 idleVerify(Ignite ig, @Nullable String... caches) {
         IgniteEx ig0 = (IgniteEx)ig;
 
         Set<String> cacheNames = new HashSet<>();
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicWithPersistenceTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicWithPersistenceTestSuite.java
index 3dee2a0..210b1c7 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicWithPersistenceTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicWithPersistenceTestSuite.java
@@ -40,11 +40,6 @@ import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteCl
 import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotMXBeanTest;
 import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotManagerSelfTest;
 import org.apache.ignite.marshaller.GridMarshallerMappingConsistencyTest;
-import org.apache.ignite.util.GridCommandHandlerClusterByClassTest;
-import org.apache.ignite.util.GridCommandHandlerClusterByClassWithSSLTest;
-import org.apache.ignite.util.GridCommandHandlerSslTest;
-import org.apache.ignite.util.GridCommandHandlerTest;
-import org.apache.ignite.util.GridCommandHandlerWithSSLTest;
 import org.apache.ignite.util.GridInternalTaskUnusedWalSegmentsTest;
 import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
@@ -62,11 +57,6 @@ import org.junit.runners.Suite;
     SystemWorkersBlockingTest.class,
     CheckpointReadLockFailureTest.class,
 
-    GridCommandHandlerTest.class,
-    GridCommandHandlerWithSSLTest.class,
-    GridCommandHandlerClusterByClassTest.class,
-    GridCommandHandlerClusterByClassWithSSLTest.class,
-    GridCommandHandlerSslTest.class,
     GridInternalTaskUnusedWalSegmentsTest.class,
 
     GridNodeMetricsLogPdsSelfTest.class,
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteUtilSelfTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteUtilSelfTestSuite.java
index 6aabb35..389bebd 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteUtilSelfTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteUtilSelfTestSuite.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.testsuites;
 
 import org.apache.ignite.internal.IgniteVersionUtilsSelfTest;
-import org.apache.ignite.internal.commandline.CommandHandlerParsingTest;
 import org.apache.ignite.internal.pagemem.impl.PageIdUtilsSelfTest;
 import org.apache.ignite.internal.processors.cache.GridCacheUtilsSelfTest;
 import org.apache.ignite.internal.util.GridArraysSelfTest;
@@ -135,9 +134,6 @@ import org.junit.runners.Suite;
     //dbx
     PageIdUtilsSelfTest.class,
 
-    // control.sh
-    CommandHandlerParsingTest.class,
-
     GridCountDownCallbackTest.class
 })
 public class IgniteUtilSelfTestSuite {
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/SecurityTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/SecurityTestSuite.java
index 0667243..ccd009c 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/SecurityTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/SecurityTestSuite.java
@@ -17,7 +17,6 @@
 
 package org.apache.ignite.testsuites;
 
-import org.apache.ignite.internal.processors.security.GridCommandHandlerSslWithSecurityTest;
 import org.apache.ignite.internal.processors.security.IgniteSecurityProcessorTest;
 import org.apache.ignite.internal.processors.security.InvalidServerTest;
 import org.apache.ignite.internal.processors.security.cache.CacheOperationPermissionCheckTest;
@@ -107,7 +106,6 @@ import org.junit.runners.Suite;
     ContinuousQueryWithTransformerSandboxTest.class,
 
     IgniteSecurityProcessorTest.class,
-    GridCommandHandlerSslWithSecurityTest.class,
     MultipleSSLContextsTest.class
 })
 public class SecurityTestSuite {
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgniteCacheGroupsWithRestartsTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgniteCacheGroupsWithRestartsTest.java
index d6b3aff..0489880 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgniteCacheGroupsWithRestartsTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgniteCacheGroupsWithRestartsTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.ignite.internal.processors.cache.persistence.db;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.LinkedHashMap;
@@ -44,8 +43,6 @@ import org.apache.ignite.configuration.DataRegionConfiguration;
 import org.apache.ignite.configuration.DataStorageConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.IgniteEx;
-import org.apache.ignite.internal.commandline.CommandHandler;
-import org.apache.ignite.internal.commandline.cache.argument.FindAndDeleteGarbageArg;
 import org.apache.ignite.internal.util.typedef.X;
 import org.apache.ignite.internal.util.typedef.internal.CU;
 import org.apache.ignite.internal.util.typedef.internal.S;
@@ -268,14 +265,6 @@ public class IgniteCacheGroupsWithRestartsTest extends GridCommonAbstractTest {
      * @throws Exception If failed.
      */
     @Test
-    public void testCleaningGarbageAfterCacheDestroyedAndNodeStop_ControlConsoleUtil() throws Exception {
-        testFindAndDeleteGarbage(this::executeTaskViaControlConsoleUtil);
-    }
-
-    /**
-     * @throws Exception If failed.
-     */
-    @Test
     public void testNodeRestartWith3rdPartyCacheStoreAndPersistenceEnabled() throws Exception {
         IgniteEx crd = startGrid(0);
 
@@ -306,7 +295,7 @@ public class IgniteCacheGroupsWithRestartsTest extends GridCommonAbstractTest {
     /**
      * @param doFindAndRemove Do find and remove.
      */
-    private void testFindAndDeleteGarbage(
+    public void testFindAndDeleteGarbage(
         BiFunction<IgniteEx, Boolean, VisorFindAndDeleteGarbageInPersistenceTaskResult> doFindAndRemove
     ) throws Exception {
         IgniteEx ignite = startGrids(3);
@@ -372,28 +361,6 @@ public class IgniteCacheGroupsWithRestartsTest extends GridCommonAbstractTest {
     }
 
     /**
-     * @param ignite Ignite to execute task on.
-     * @param delFoundGarbage If clearing mode should be used.
-     * @return Result of task run.
-     */
-    private VisorFindAndDeleteGarbageInPersistenceTaskResult executeTaskViaControlConsoleUtil(
-        IgniteEx ignite,
-        boolean delFoundGarbage
-    ) {
-        CommandHandler hnd = new CommandHandler();
-
-        List<String> args = new ArrayList<>(Arrays.asList("--yes", "--port", "11212", "--cache", "find_garbage",
-            ignite.localNode().id().toString()));
-
-        if (delFoundGarbage)
-            args.add(FindAndDeleteGarbageArg.DELETE.argName());
-
-        hnd.execute(args);
-
-        return hnd.getLastOperationResult();
-    }
-
-    /**
      * @param ignite Ignite instance.
      */
     private void prepareCachesAndData(IgniteEx ignite) {
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java
index 691b784..08eff49 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java
@@ -272,7 +272,6 @@ import org.apache.ignite.internal.sql.SqlParserUserSelfTest;
 import org.apache.ignite.spi.communication.tcp.GridOrderedMessageCancelSelfTest;
 import org.apache.ignite.sqltests.PartitionedSqlTest;
 import org.apache.ignite.sqltests.ReplicatedSqlTest;
-import org.apache.ignite.util.KillCommandsCommandShTest;
 import org.apache.ignite.util.KillCommandsMXBeanTest;
 import org.apache.ignite.util.KillCommandsSQLTest;
 import org.junit.runner.RunWith;
@@ -611,7 +610,6 @@ import org.junit.runners.Suite;
     KillQueryOnClientDisconnectTest.class,
     KillQueryErrorOnCancelTest.class,
     KillCommandsMXBeanTest.class,
-    KillCommandsCommandShTest.class,
     KillCommandsSQLTest.class,
 
     // Table statistics.
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheWithIndexingAndPersistenceTestSuite.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheWithIndexingAndPersistenceTestSuite.java
index c5369f5..175e930 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheWithIndexingAndPersistenceTestSuite.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheWithIndexingAndPersistenceTestSuite.java
@@ -19,14 +19,6 @@ package org.apache.ignite.testsuites;
 
 import org.apache.ignite.internal.processors.cache.StartCachesInParallelTest;
 import org.apache.ignite.internal.processors.cache.index.IoStatisticsBasicIndexSelfTest;
-import org.apache.ignite.util.GridCommandHandlerBrokenIndexTest;
-import org.apache.ignite.util.GridCommandHandlerCheckIndexesInlineSizeTest;
-import org.apache.ignite.util.GridCommandHandlerIndexingCheckSizeTest;
-import org.apache.ignite.util.GridCommandHandlerIndexingClusterByClassTest;
-import org.apache.ignite.util.GridCommandHandlerIndexingClusterByClassWithSSLTest;
-import org.apache.ignite.util.GridCommandHandlerIndexingTest;
-import org.apache.ignite.util.GridCommandHandlerIndexingWithSSLTest;
-import org.apache.ignite.util.GridCommandHandlerMetadataTest;
 import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
 
@@ -35,16 +27,8 @@ import org.junit.runners.Suite;
  */
 @RunWith(Suite.class)
 @Suite.SuiteClasses({
-    GridCommandHandlerBrokenIndexTest.class,
-    GridCommandHandlerIndexingTest.class,
-    GridCommandHandlerIndexingWithSSLTest.class,
-    GridCommandHandlerIndexingClusterByClassTest.class,
-    GridCommandHandlerIndexingClusterByClassWithSSLTest.class,
-    GridCommandHandlerIndexingCheckSizeTest.class,
-    GridCommandHandlerCheckIndexesInlineSizeTest.class,
     StartCachesInParallelTest.class,
-    IoStatisticsBasicIndexSelfTest.class,
-    GridCommandHandlerMetadataTest.class
+    IoStatisticsBasicIndexSelfTest.class
 })
 public class IgniteCacheWithIndexingAndPersistenceTestSuite {
 }
diff --git a/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpiTestSuite2.java b/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpiTestSuite2.java
index 1d2ffac..6ace5dd 100644
--- a/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpiTestSuite2.java
+++ b/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpiTestSuite2.java
@@ -21,8 +21,6 @@ import org.apache.ignite.internal.IgniteClientReconnectCacheTest;
 import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedMultiNodeFullApiSelfTest;
 import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedNodeRestartTest;
 import org.apache.ignite.internal.processors.cache.distributed.replicated.GridCacheReplicatedMultiNodeFullApiSelfTest;
-import org.apache.ignite.util.GridCommandHandlerClusterByClassTest;
-import org.apache.ignite.util.GridCommandHandlerTest;
 import org.junit.BeforeClass;
 import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
@@ -36,9 +34,7 @@ import org.junit.runners.Suite;
     IgniteCacheEntryListenerWithZkDiscoAtomicTest.class,
     IgniteClientReconnectCacheTest.class,
     GridCachePartitionedMultiNodeFullApiSelfTest.class,
-    GridCacheReplicatedMultiNodeFullApiSelfTest.class,
-    GridCommandHandlerTest.class,
-    GridCommandHandlerClusterByClassTest.class
+    GridCacheReplicatedMultiNodeFullApiSelfTest.class
 })
 public class ZookeeperDiscoverySpiTestSuite2 {
     /**
diff --git a/pom.xml b/pom.xml
index bd44b9d..4ae4bb1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -94,6 +94,7 @@
         <module>modules/ml/xgboost-model-parser</module>
         <module>modules/ml/h2o-model-parser</module>
         <module>modules/opencensus</module>
+        <module>modules/control-utility</module>
     </modules>
 
     <profiles>