diff --git a/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/CalculatedFieldExportService.java b/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/CalculatedFieldExportService.java index fc1465b29c..3612f9f4e0 100644 --- a/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/CalculatedFieldExportService.java +++ b/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/CalculatedFieldExportService.java @@ -19,6 +19,7 @@ import org.springframework.stereotype.Service; import org.thingsboard.server.common.data.EntityType; import org.thingsboard.server.common.data.cf.CalculatedField; import org.thingsboard.server.common.data.id.CalculatedFieldId; +import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.sync.ie.EntityExportData; import org.thingsboard.server.queue.util.TbCoreComponent; import org.thingsboard.server.service.sync.vc.data.EntitiesExportCtx; @@ -32,6 +33,12 @@ public class CalculatedFieldExportService extends BaseEntityExportService ctx, CalculatedField calculatedField, EntityExportData exportData) { calculatedField.setEntityId(getExternalIdOrElseInternal(ctx, calculatedField.getEntityId())); + calculatedField.getConfiguration().getArguments().values().forEach(argument -> { + if (argument.getRefEntityId() != null) { + EntityId internalEntityId = getExternalIdOrElseInternal(ctx, argument.getRefEntityId()); + argument.setRefEntityId(internalEntityId); + } + }); } @Override diff --git a/application/src/main/java/org/thingsboard/server/service/sync/ie/importing/impl/CalculatedFieldImportService.java b/application/src/main/java/org/thingsboard/server/service/sync/ie/importing/impl/CalculatedFieldImportService.java index 07a306d511..978ac758df 100644 --- a/application/src/main/java/org/thingsboard/server/service/sync/ie/importing/impl/CalculatedFieldImportService.java +++ b/application/src/main/java/org/thingsboard/server/service/sync/ie/importing/impl/CalculatedFieldImportService.java @@ -23,6 +23,7 @@ import org.thingsboard.server.common.data.audit.ActionType; import org.thingsboard.server.common.data.cf.CalculatedField; import org.thingsboard.server.common.data.exception.ThingsboardException; import org.thingsboard.server.common.data.id.CalculatedFieldId; +import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.sync.ie.EntityExportData; import org.thingsboard.server.dao.cf.CalculatedFieldService; @@ -45,6 +46,12 @@ public class CalculatedFieldImportService extends BaseEntityImportService exportData, IdProvider idProvider) { calculatedField.setEntityId(idProvider.getInternalId(calculatedField.getEntityId())); + calculatedField.getConfiguration().getArguments().values().forEach(argument -> { + if (argument.getRefEntityId() != null) { + EntityId internalEntityId = idProvider.getInternalId(argument.getRefEntityId()); + argument.setRefEntityId(internalEntityId); + } + }); return calculatedField; } diff --git a/application/src/test/java/org/thingsboard/server/service/sync/ie/ExportImportServiceSqlTest.java b/application/src/test/java/org/thingsboard/server/service/sync/ie/ExportImportServiceSqlTest.java index 3e47db1bc0..7d1fee8ac3 100644 --- a/application/src/test/java/org/thingsboard/server/service/sync/ie/ExportImportServiceSqlTest.java +++ b/application/src/test/java/org/thingsboard/server/service/sync/ie/ExportImportServiceSqlTest.java @@ -204,7 +204,7 @@ public class ExportImportServiceSqlTest extends AbstractControllerTest { Asset asset = createAsset(tenantId1, null, assetProfile.getId(), "Asset 1"); DeviceProfile deviceProfile = createDeviceProfile(tenantId1, ruleChain.getId(), dashboard.getId(), "Device profile 1"); Device device = createDevice(tenantId1, null, deviceProfile.getId(), "Device 1"); - CalculatedField calculatedField = createCalculatedField(tenantId1, device.getId(), device.getId()); + CalculatedField calculatedField = createCalculatedField(tenantId1, device.getId(), asset.getId()); Map entitiesExportData = Stream.of(customer.getId(), asset.getId(), device.getId(), ruleChain.getId(), dashboard.getId(), assetProfile.getId(), deviceProfile.getId(), calculatedField.getId()) @@ -364,6 +364,7 @@ public class ExportImportServiceSqlTest extends AbstractControllerTest { CalculatedField exportedCalculatedField = (CalculatedField) exportEntity(tenantAdmin2, (CalculatedFieldId) ids.get(calculatedField.getId())).getEntity(); assertThat(exportedCalculatedField.getName()).isEqualTo(calculatedField.getName()); assertThat(exportedCalculatedField.getEntityId()).isEqualTo(device.getId()); + assertThat(exportedCalculatedField.getConfiguration().getReferencedEntities()).isEqualTo(calculatedField.getConfiguration().getReferencedEntities()); deviceProfile.setDefaultDashboardId(null); deviceProfileService.saveDeviceProfile(deviceProfile);