diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbCreateRelationNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbCreateRelationNode.java
deleted file mode 100644
index 1eebfa21fd..0000000000
--- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbCreateRelationNode.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * Copyright © 2016-2018 The Thingsboard Authors
- *
- * 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.
- */
-package org.thingsboard.rule.engine.action;
-
-import com.google.common.util.concurrent.ListenableFuture;
-import lombok.extern.slf4j.Slf4j;
-import org.thingsboard.rule.engine.api.*;
-import org.thingsboard.rule.engine.api.util.DonAsynchron;
-import org.thingsboard.rule.engine.api.util.TbNodeUtils;
-import org.thingsboard.server.common.data.id.EntityId;
-import org.thingsboard.server.common.data.id.EntityIdFactory;
-import org.thingsboard.server.common.data.plugin.ComponentType;
-import org.thingsboard.server.common.data.relation.EntityRelation;
-import org.thingsboard.server.common.data.relation.EntitySearchDirection;
-import org.thingsboard.server.common.data.relation.RelationTypeGroup;
-import org.thingsboard.server.common.msg.TbMsg;
-
-import static org.thingsboard.rule.engine.api.TbRelationTypes.FAILURE;
-import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS;
-import static org.thingsboard.rule.engine.api.util.DonAsynchron.withCallback;
-
-@Slf4j
-@RuleNode(
- type = ComponentType.ACTION,
- name = "create relation",
- configClazz = TbCreateRelationNodeConfiguration.class,
- nodeDescription = "Create the relation from the selected entity to originator of the message by type and direction",
- nodeDetails = "If relation is already exists - send Message via Success chain with error message, otherwise is also used Success chain without error message.",
- uiResources = {"static/rulenode/rulenode-core-config.js"},
- configDirective = "tbFilterNodeCheckRelationConfig")
-public class TbCreateRelationNode implements TbNode {
-
- private TbCreateRelationNodeConfiguration config;
- private EntityId fromId;
- private EntityId toId;
-
- @Override
- public void init(TbContext ctx, TbNodeConfiguration configuration) throws TbNodeException {
- this.config = TbNodeUtils.convert(configuration, TbCreateRelationNodeConfiguration.class);
- }
-
- @Override
- public void onMsg(TbContext ctx, TbMsg msg) {
- DonAsynchron.withCallback(checkRelation(ctx, msg), result -> {
- if (result) {
- ctx.tellNext(msg, SUCCESS, new Throwable("Relation between message originator and Entity: " + config.getEntityId() + " is already exist"));
- } else {
- processCreateRelation(ctx, msg);
- }
- }, error -> ctx.tellFailure(msg, error), ctx.getDbCallbackExecutor());
- }
-
- @Override
- public void destroy() {
- }
-
- private ListenableFuture checkRelation(TbContext ctx, TbMsg msg) {
- if (EntitySearchDirection.TO.name().equals(config.getDirection())) {
- fromId = EntityIdFactory.getByTypeAndId(config.getEntityType(), config.getEntityId());
- toId = msg.getOriginator();
- } else {
- fromId = EntityIdFactory.getByTypeAndId(config.getEntityType(), config.getEntityId());
- toId = msg.getOriginator();
- }
- return ctx.getRelationService().checkRelation(ctx.getTenantId(), fromId, toId, config.getRelationType(), RelationTypeGroup.COMMON);
- }
-
- private void processCreateRelation(TbContext ctx, TbMsg msg) {
- EntityRelation entityRelation = new EntityRelation(fromId, toId, config.getRelationType(), RelationTypeGroup.COMMON);
- withCallback(ctx.getRelationService().saveRelationAsync(ctx.getTenantId(), entityRelation),
- filterResult -> ctx.tellNext(msg, filterResult ? SUCCESS : FAILURE), t -> ctx.tellFailure(msg, t), ctx.getDbCallbackExecutor());
- }
-
-}
diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbCreateRelationNodeConfiguration.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbCreateRelationNodeConfiguration.java
deleted file mode 100644
index 71fb1029cc..0000000000
--- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbCreateRelationNodeConfiguration.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * Copyright © 2016-2018 The Thingsboard Authors
- *
- * 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.
- */
-package org.thingsboard.rule.engine.action;
-
-import lombok.Data;
-import org.thingsboard.rule.engine.api.NodeConfiguration;
-import org.thingsboard.server.common.data.relation.EntitySearchDirection;
-
-@Data
-public class TbCreateRelationNodeConfiguration implements NodeConfiguration {
-
- private String direction;
- private String entityId;
- private String entityType;
- private String relationType;
-
-
- @Override
- public TbCreateRelationNodeConfiguration defaultConfiguration() {
- TbCreateRelationNodeConfiguration configuration = new TbCreateRelationNodeConfiguration();
- configuration.setDirection(EntitySearchDirection.FROM.name());
- configuration.setRelationType("Contains");
- return configuration;
- }
-}