diff --git a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/GenericCertificateDAOImpl.java b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/GenericCertificateDAOImpl.java index 7655e46005..3703101fd2 100644 --- a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/GenericCertificateDAOImpl.java +++ b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/GenericCertificateDAOImpl.java @@ -63,7 +63,7 @@ public class GenericCertificateDAOImpl extends AbstractCertificateDAOImpl { "WHERE TENANT_ID = ?"; if (StringUtils.isNotEmpty(serialNumber)) { - sql += " AND SERIAL_NUMBER = ?"; + sql += " AND SERIAL_NUMBER LIKE ?"; } if (StringUtils.isNotEmpty(deviceIdentifier)) { @@ -79,7 +79,7 @@ public class GenericCertificateDAOImpl extends AbstractCertificateDAOImpl { int paramIdx = 2; if (StringUtils.isNotEmpty(serialNumber)) { - stmt.setString(paramIdx++, serialNumber); + stmt.setString(paramIdx++, "%" + serialNumber + "%"); } if (StringUtils.isNotEmpty(deviceIdentifier)) { @@ -124,7 +124,7 @@ public class GenericCertificateDAOImpl extends AbstractCertificateDAOImpl { "WHERE TENANT_ID = ? "; if (StringUtils.isNotEmpty(serialNumber)) { - query += "AND SERIAL_NUMBER = ? "; + query += "AND SERIAL_NUMBER LIKE ? "; isCertificateSerialNumberProvided = true; } @@ -144,7 +144,7 @@ public class GenericCertificateDAOImpl extends AbstractCertificateDAOImpl { int paramIdx = 1; stmt.setInt(paramIdx++, tenantId); if (isCertificateSerialNumberProvided) { - stmt.setString(paramIdx++, serialNumber); + stmt.setString(paramIdx++, "%" + serialNumber + "%"); } if (isCertificateDeviceIdentifierProvided) { stmt.setString(paramIdx++, deviceIdentifier); diff --git a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/OracleCertificateDAOImpl.java b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/OracleCertificateDAOImpl.java index 9231a0d746..31c4779dc5 100644 --- a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/OracleCertificateDAOImpl.java +++ b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/OracleCertificateDAOImpl.java @@ -63,7 +63,7 @@ public class OracleCertificateDAOImpl extends AbstractCertificateDAOImpl { "FROM DM_DEVICE_CERTIFICATE " + "WHERE TENANT_ID = ? "; if (StringUtils.isNotEmpty(serialNumber)) { - query += "AND SERIAL_NUMBER = ? "; + query += "AND SERIAL_NUMBER LIKE ? "; isCertificateSerialNumberProvided = true; } @@ -83,7 +83,7 @@ public class OracleCertificateDAOImpl extends AbstractCertificateDAOImpl { int paramIdx = 1; stmt.setInt(paramIdx++, tenantId); if (isCertificateSerialNumberProvided) { - stmt.setString(paramIdx++, serialNumber); + stmt.setString(paramIdx++, "%" + serialNumber+ "%"); } if (isCertificateDeviceIdentifierProvided) { stmt.setString(paramIdx++, deviceIdentifier); @@ -136,7 +136,7 @@ public class OracleCertificateDAOImpl extends AbstractCertificateDAOImpl { "WHERE TENANT_ID = ?"; if (StringUtils.isNotEmpty(serialNumber)) { - sql += " AND SERIAL_NUMBER = ?"; + sql += " AND SERIAL_NUMBER LIKE ?"; } if (StringUtils.isNotEmpty(deviceIdentifier)) { @@ -152,7 +152,7 @@ public class OracleCertificateDAOImpl extends AbstractCertificateDAOImpl { int paramIdx = 2; if (StringUtils.isNotEmpty(serialNumber)) { - stmt.setString(paramIdx++, serialNumber); + stmt.setString(paramIdx++, "%" + serialNumber + "%"); } if (StringUtils.isNotEmpty(deviceIdentifier)) { diff --git a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/PostgreSQLCertificateDAOImpl.java b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/PostgreSQLCertificateDAOImpl.java index e31e005f0b..55fd124a95 100644 --- a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/PostgreSQLCertificateDAOImpl.java +++ b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/PostgreSQLCertificateDAOImpl.java @@ -63,7 +63,7 @@ public class PostgreSQLCertificateDAOImpl extends AbstractCertificateDAOImpl { "FROM DM_DEVICE_CERTIFICATE " + "WHERE TENANT_ID = ? "; if (StringUtils.isNotEmpty(serialNumber)) { - query += "AND SERIAL_NUMBER = ? "; + query += "AND SERIAL_NUMBER LIKE ? "; isCertificateSerialNumberProvided = true; } @@ -83,7 +83,7 @@ public class PostgreSQLCertificateDAOImpl extends AbstractCertificateDAOImpl { int paramIdx = 1; stmt.setInt(paramIdx++, tenantId); if (isCertificateSerialNumberProvided) { - stmt.setString(paramIdx++, serialNumber); + stmt.setString(paramIdx++, "%" + serialNumber + "%"); } if (isCertificateDeviceIdentifierProvided) { stmt.setString(paramIdx++, deviceIdentifier); @@ -136,7 +136,7 @@ public class PostgreSQLCertificateDAOImpl extends AbstractCertificateDAOImpl { "WHERE TENANT_ID = ?"; if (StringUtils.isNotEmpty(serialNumber)) { - sql += " AND SERIAL_NUMBER = ?"; + sql += " AND SERIAL_NUMBER LIKE ?"; } if (StringUtils.isNotEmpty(deviceIdentifier)) { @@ -144,7 +144,7 @@ public class PostgreSQLCertificateDAOImpl extends AbstractCertificateDAOImpl { } if (StringUtils.isNotEmpty(username)) { - sql += " AND USERNAME ILIKE ?"; + sql += " AND USERNAME LIKE ?"; } try (PreparedStatement stmt = conn.prepareStatement(sql)) { @@ -152,7 +152,7 @@ public class PostgreSQLCertificateDAOImpl extends AbstractCertificateDAOImpl { int paramIdx = 2; if (StringUtils.isNotEmpty(serialNumber)) { - stmt.setString(paramIdx++, serialNumber); + stmt.setString(paramIdx++, "%" + serialNumber + "%"); } if (StringUtils.isNotEmpty(deviceIdentifier)) { diff --git a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/SQLServerCertificateDAOImpl.java b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/SQLServerCertificateDAOImpl.java index 6e0908a286..6734fcd997 100644 --- a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/SQLServerCertificateDAOImpl.java +++ b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/SQLServerCertificateDAOImpl.java @@ -63,7 +63,7 @@ public class SQLServerCertificateDAOImpl extends AbstractCertificateDAOImpl { "FROM DM_DEVICE_CERTIFICATE " + "WHERE TENANT_ID = ? "; if (StringUtils.isNotEmpty(serialNumber)) { - query += "AND SERIAL_NUMBER = ? "; + query += "AND SERIAL_NUMBER LIKE ? "; isCertificateSerialNumberProvided = true; } @@ -83,7 +83,7 @@ public class SQLServerCertificateDAOImpl extends AbstractCertificateDAOImpl { int paramIdx = 1; stmt.setInt(paramIdx++, tenantId); if (isCertificateSerialNumberProvided) { - stmt.setString(paramIdx++, serialNumber); + stmt.setString(paramIdx++, "%" + serialNumber + "%"); } if (isCertificateDeviceIdentifierProvided) { stmt.setString(paramIdx++, deviceIdentifier); @@ -136,7 +136,7 @@ public class SQLServerCertificateDAOImpl extends AbstractCertificateDAOImpl { "WHERE TENANT_ID = ?"; if (StringUtils.isNotEmpty(serialNumber)) { - sql += " AND SERIAL_NUMBER = ?"; + sql += " AND SERIAL_NUMBER LIKE ?"; } if (StringUtils.isNotEmpty(deviceIdentifier)) { @@ -152,7 +152,7 @@ public class SQLServerCertificateDAOImpl extends AbstractCertificateDAOImpl { int paramIdx = 2; if (StringUtils.isNotEmpty(serialNumber)) { - stmt.setString(paramIdx++, serialNumber); + stmt.setString(paramIdx++, "%" + serialNumber + "%"); } if (StringUtils.isNotEmpty(deviceIdentifier)) { diff --git a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.api/src/main/java/io/entgra/device/mgt/core/device/mgt/api/jaxrs/service/api/UserManagementService.java b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.api/src/main/java/io/entgra/device/mgt/core/device/mgt/api/jaxrs/service/api/UserManagementService.java index 98812806ba..00d4434e6b 100644 --- a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.api/src/main/java/io/entgra/device/mgt/core/device/mgt/api/jaxrs/service/api/UserManagementService.java +++ b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.api/src/main/java/io/entgra/device/mgt/core/device/mgt/api/jaxrs/service/api/UserManagementService.java @@ -144,7 +144,7 @@ import javax.ws.rs.core.Response; description = "Adding a User", key = "um:users:cred:change", roles = {"Internal/devicemgt-user"}, - permissions = {"/login/password/update"} + permissions = {"/device-mgt/users/password/update"} ), @Scope( name = "Sending Enrollment Invitations to Users", diff --git a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.common/src/main/java/io/entgra/device/mgt/core/device/mgt/common/spi/DeviceManagementService.java b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.common/src/main/java/io/entgra/device/mgt/core/device/mgt/common/spi/DeviceManagementService.java index d847fd8f9b..b7cd91f34e 100644 --- a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.common/src/main/java/io/entgra/device/mgt/core/device/mgt/common/spi/DeviceManagementService.java +++ b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.common/src/main/java/io/entgra/device/mgt/core/device/mgt/common/spi/DeviceManagementService.java @@ -26,6 +26,7 @@ import io.entgra.device.mgt.core.device.mgt.common.license.mgt.License; import io.entgra.device.mgt.core.device.mgt.common.policy.mgt.PolicyMonitoringManager; import io.entgra.device.mgt.core.device.mgt.common.pull.notification.PullNotificationSubscriber; import io.entgra.device.mgt.core.device.mgt.common.push.notification.PushNotificationConfig; +import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypeMetaDefinition; import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypePlatformDetails; /** @@ -65,4 +66,6 @@ public interface DeviceManagementService { DeviceEnrollmentInvitationDetails getDeviceEnrollmentInvitationDetails(); License getLicenseConfig(); + + DeviceTypeMetaDefinition getDeviceTypeMetaDefinition(); } diff --git a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.common/src/main/java/io/entgra/device/mgt/core/device/mgt/common/type/mgt/DeviceTypeMetaDetails.java b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.common/src/main/java/io/entgra/device/mgt/core/device/mgt/common/type/mgt/DeviceTypeMetaDetails.java new file mode 100644 index 0000000000..4084b93245 --- /dev/null +++ b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.common/src/main/java/io/entgra/device/mgt/core/device/mgt/common/type/mgt/DeviceTypeMetaDetails.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. 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. + */ +package io.entgra.device.mgt.core.device.mgt.common.type.mgt; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "DeviceTypeMetaDetails", propOrder = { + "storeVisibilityEnabled" +}) +public class DeviceTypeMetaDetails { + + @XmlElement(name = "storeVisibilityEnabled") + private boolean storeVisibilityEnabled; + + public boolean isStoreVisibilityEnabled() { + return storeVisibilityEnabled; + } + + public void setStoreVisibilityEnabled(boolean storeVisibilityEnabled) { + this.storeVisibilityEnabled = storeVisibilityEnabled; + } +} + + diff --git a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/DeviceManagementPluginRepository.java b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/DeviceManagementPluginRepository.java index c0c9dbddb1..6ad7b53c74 100644 --- a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/DeviceManagementPluginRepository.java +++ b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/DeviceManagementPluginRepository.java @@ -85,7 +85,7 @@ public class DeviceManagementPluginRepository implements DeviceManagerStartupLis if (isInitiated) { /* Initializing Device Management Service Provider */ provider.init(); - DeviceTypeMetaDefinition deviceTypeDefinition = null; + DeviceTypeMetaDefinition deviceTypeDefinition; if (provider instanceof DeviceTypeDefinitionProvider) { DeviceTypeServiceIdentifier deviceTypeIdentifier = new DeviceTypeServiceIdentifier( provider.getType()); @@ -102,6 +102,8 @@ public class DeviceManagementPluginRepository implements DeviceManagerStartupLis if (existingProvider != null) { removeDeviceManagementProvider(provider); } + } else { + deviceTypeDefinition = provider.getDeviceTypeMetaDefinition(); } DeviceManagerUtil.registerDeviceType(deviceType, tenantId, isSharedWithAllTenants, deviceTypeDefinition); diff --git a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/test/java/io/entgra/device/mgt/core/device/mgt/core/TestDeviceManagementService.java b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/test/java/io/entgra/device/mgt/core/device/mgt/core/TestDeviceManagementService.java index 516159d597..0df3bdad7e 100644 --- a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/test/java/io/entgra/device/mgt/core/device/mgt/core/TestDeviceManagementService.java +++ b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/test/java/io/entgra/device/mgt/core/device/mgt/core/TestDeviceManagementService.java @@ -27,6 +27,7 @@ import io.entgra.device.mgt.core.device.mgt.common.policy.mgt.PolicyMonitoringMa import io.entgra.device.mgt.core.device.mgt.common.pull.notification.PullNotificationSubscriber; import io.entgra.device.mgt.core.device.mgt.common.push.notification.PushNotificationConfig; import io.entgra.device.mgt.core.device.mgt.common.spi.DeviceManagementService; +import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypeMetaDefinition; import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypePlatformDetails; import java.util.ArrayList; @@ -135,4 +136,9 @@ public class TestDeviceManagementService implements DeviceManagementService { } @Override public License getLicenseConfig() { return null; } + + @Override + public DeviceTypeMetaDefinition getDeviceTypeMetaDefinition() { + return null; + } } diff --git a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.extensions/src/main/java/io/entgra/device/mgt/core/device/mgt/extensions/device/type/template/DeviceTypeManagerService.java b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.extensions/src/main/java/io/entgra/device/mgt/core/device/mgt/extensions/device/type/template/DeviceTypeManagerService.java index 049c5e6cdf..b357c94cca 100644 --- a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.extensions/src/main/java/io/entgra/device/mgt/core/device/mgt/extensions/device/type/template/DeviceTypeManagerService.java +++ b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.extensions/src/main/java/io/entgra/device/mgt/core/device/mgt/extensions/device/type/template/DeviceTypeManagerService.java @@ -17,6 +17,7 @@ */ package io.entgra.device.mgt.core.device.mgt.extensions.device.type.template; +import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypeMetaDetails; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.wso2.carbon.context.CarbonContext; @@ -38,6 +39,7 @@ import io.entgra.device.mgt.core.device.mgt.common.policy.mgt.PolicyMonitoringMa import io.entgra.device.mgt.core.device.mgt.common.pull.notification.PullNotificationSubscriber; import io.entgra.device.mgt.core.device.mgt.common.push.notification.PushNotificationConfig; import io.entgra.device.mgt.core.device.mgt.common.spi.DeviceManagementService; +import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypeMetaDefinition; import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypePlatformDetails; import io.entgra.device.mgt.core.device.mgt.extensions.device.type.template.config.ConfigProperties; import io.entgra.device.mgt.core.device.mgt.extensions.device.type.template.config.DeviceStatusTaskConfiguration; @@ -81,6 +83,7 @@ public class DeviceTypeManagerService implements DeviceManagementService { private DeviceTypePlatformDetails deviceTypePlatformDetails; private DeviceEnrollmentInvitationDetails deviceEnrollmentInvitationDetails; private GeneralConfig generalConfig; + private DeviceTypeMetaDefinition deviceTypeMetaDefinition; private boolean isRegistryBasedConfigs = false; private boolean isScheduled = false; private String notifierType; @@ -108,6 +111,8 @@ public class DeviceTypeManagerService implements DeviceManagementService { this.setDeviceEnrollmentInvitationDetails(deviceTypeConfiguration); this.licenseConfig = new License(); this.setLicenseConfig(deviceTypeConfiguration); + this.deviceTypeMetaDefinition = new DeviceTypeMetaDefinition(); + this.setDeviceTypeMetaDefinition(deviceTypeConfiguration); } @Override @@ -261,6 +266,11 @@ public class DeviceTypeManagerService implements DeviceManagementService { return licenseConfig; } + @Override + public DeviceTypeMetaDefinition getDeviceTypeMetaDefinition() { + return deviceTypeMetaDefinition; + } + private void setProvisioningConfig(String tenantDomain, DeviceTypeConfiguration deviceTypeConfiguration) { if (deviceTypeConfiguration.getProvisioningConfig() != null) { boolean sharedWithAllTenants = deviceTypeConfiguration.getProvisioningConfig().isSharedWithAllTenants(); @@ -388,4 +398,11 @@ public class DeviceTypeManagerService implements DeviceManagementService { licenseConfig.setText(license.getText()); } } + + public void setDeviceTypeMetaDefinition(DeviceTypeConfiguration deviceTypeConfiguration) { + DeviceTypeMetaDetails deviceTypeMetaDefinitions = deviceTypeConfiguration.getDeviceTypeMetaDetails(); + if (deviceTypeMetaDefinitions != null) { + deviceTypeMetaDefinition.setStoreVisibilityEnabled(deviceTypeMetaDefinitions.isStoreVisibilityEnabled()); + } + } } diff --git a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.extensions/src/main/java/io/entgra/device/mgt/core/device/mgt/extensions/device/type/template/config/DeviceTypeConfiguration.java b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.extensions/src/main/java/io/entgra/device/mgt/core/device/mgt/extensions/device/type/template/config/DeviceTypeConfiguration.java index cf94ccc235..3d8d95b1bf 100644 --- a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.extensions/src/main/java/io/entgra/device/mgt/core/device/mgt/extensions/device/type/template/config/DeviceTypeConfiguration.java +++ b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.extensions/src/main/java/io/entgra/device/mgt/core/device/mgt/extensions/device/type/template/config/DeviceTypeConfiguration.java @@ -18,6 +18,7 @@ package io.entgra.device.mgt.core.device.mgt.extensions.device.type.template.config; import io.entgra.device.mgt.core.device.mgt.common.invitation.mgt.DeviceEnrollmentInvitationDetails; +import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypeMetaDetails; import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypePlatformDetails; import javax.xml.bind.annotation.XmlElement; @@ -93,6 +94,8 @@ public class DeviceTypeConfiguration { protected DeviceTypePlatformDetails deviceTypePlatformDetails; @XmlElement(name = "DeviceEnrollmentInvitationDetails", required = true) protected DeviceEnrollmentInvitationDetails deviceEnrollmentInvitationDetails; + @XmlElement(name = "DeviceTypeMetaDetails") + protected DeviceTypeMetaDetails deviceTypeMetaDetails; public DeviceTypePlatformDetails getDeviceTypePlatformDetails() { return deviceTypePlatformDetails; @@ -417,4 +420,12 @@ public class DeviceTypeConfiguration { DeviceEnrollmentInvitationDetails deviceEnrollmentInvitationDetails) { this.deviceEnrollmentInvitationDetails = deviceEnrollmentInvitationDetails; } + + public DeviceTypeMetaDetails getDeviceTypeMetaDetails() { + return deviceTypeMetaDetails; + } + + public void setDeviceTypeMetaDetails(DeviceTypeMetaDetails deviceTypeMetaDetails) { + this.deviceTypeMetaDetails = deviceTypeMetaDetails; + } } diff --git a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.extensions/src/test/java/io/entgra/device/mgt/core/device/mgt/extensions/mock/TypeXDeviceManagementService.java b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.extensions/src/test/java/io/entgra/device/mgt/core/device/mgt/extensions/mock/TypeXDeviceManagementService.java index fd61ec4cdc..3591d9caa8 100644 --- a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.extensions/src/test/java/io/entgra/device/mgt/core/device/mgt/extensions/mock/TypeXDeviceManagementService.java +++ b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.extensions/src/test/java/io/entgra/device/mgt/core/device/mgt/extensions/mock/TypeXDeviceManagementService.java @@ -33,6 +33,7 @@ import io.entgra.device.mgt.core.device.mgt.common.policy.mgt.PolicyMonitoringMa import io.entgra.device.mgt.core.device.mgt.common.pull.notification.PullNotificationSubscriber; import io.entgra.device.mgt.core.device.mgt.common.push.notification.PushNotificationConfig; import io.entgra.device.mgt.core.device.mgt.common.spi.DeviceManagementService; +import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypeMetaDefinition; import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypePlatformDetails; import java.util.ArrayList; @@ -124,4 +125,9 @@ public class TypeXDeviceManagementService implements DeviceManagementService { @Override public License getLicenseConfig() { return null; } + + @Override + public DeviceTypeMetaDefinition getDeviceTypeMetaDefinition() { + return null; + } } diff --git a/components/policy-mgt/io.entgra.device.mgt.core.policy.mgt.core/src/test/java/io/entgra/device/mgt/core/policy/mgt/core/mock/TypeXDeviceManagementService.java b/components/policy-mgt/io.entgra.device.mgt.core.policy.mgt.core/src/test/java/io/entgra/device/mgt/core/policy/mgt/core/mock/TypeXDeviceManagementService.java index 6fad650b84..db4f5d7037 100644 --- a/components/policy-mgt/io.entgra.device.mgt.core.policy.mgt.core/src/test/java/io/entgra/device/mgt/core/policy/mgt/core/mock/TypeXDeviceManagementService.java +++ b/components/policy-mgt/io.entgra.device.mgt.core.policy.mgt.core/src/test/java/io/entgra/device/mgt/core/policy/mgt/core/mock/TypeXDeviceManagementService.java @@ -27,6 +27,7 @@ import io.entgra.device.mgt.core.device.mgt.common.policy.mgt.PolicyMonitoringMa import io.entgra.device.mgt.core.device.mgt.common.pull.notification.PullNotificationSubscriber; import io.entgra.device.mgt.core.device.mgt.common.push.notification.PushNotificationConfig; import io.entgra.device.mgt.core.device.mgt.common.spi.DeviceManagementService; +import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypeMetaDefinition; import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypePlatformDetails; import java.util.ArrayList; @@ -118,4 +119,9 @@ public class TypeXDeviceManagementService implements DeviceManagementService { @Override public License getLicenseConfig() { return null; } + + @Override + public DeviceTypeMetaDefinition getDeviceTypeMetaDefinition() { + return null; + } } diff --git a/features/device-mgt/io.entgra.device.mgt.core.device.mgt.basics.feature/src/main/resources/conf/mdm-ui-config.xml b/features/device-mgt/io.entgra.device.mgt.core.device.mgt.basics.feature/src/main/resources/conf/mdm-ui-config.xml index 28114158a9..416c0711f3 100644 --- a/features/device-mgt/io.entgra.device.mgt.core.device.mgt.basics.feature/src/main/resources/conf/mdm-ui-config.xml +++ b/features/device-mgt/io.entgra.device.mgt.core.device.mgt.basics.feature/src/main/resources/conf/mdm-ui-config.xml @@ -197,6 +197,7 @@ and:enterprise:view dm:sign-csr dm:admin:devices:view + dm:devices:status:change rm:roles:add rm:users:add rm:roles:update diff --git a/features/transport-mgt/email-sender/io.entgra.device.mgt.core.email.sender.feature/src/main/resources/email/templates/share-product-download-url.vm b/features/transport-mgt/email-sender/io.entgra.device.mgt.core.email.sender.feature/src/main/resources/email/templates/share-product-download-url.vm index befc2b3241..be994a117f 100644 --- a/features/transport-mgt/email-sender/io.entgra.device.mgt.core.email.sender.feature/src/main/resources/email/templates/share-product-download-url.vm +++ b/features/transport-mgt/email-sender/io.entgra.device.mgt.core.email.sender.feature/src/main/resources/email/templates/share-product-download-url.vm @@ -16,46 +16,1981 @@ under the License. *# - Experience Entgra IoT Server + Experience Entgra UEM Server - - Entgra IoT Server - - -
-
-
-
- entgra -
-
-
-

- Hi $first-name, -

-

- Thank you very much for your interest in the Entgra IoT server. Please click - here to download the latest release of the Entgra IoT server.

- -

- If you need assistance, please contact us through Entgra - contact us -

- -

- Regards, -

- -

- Entgra IoT Administrator -

-
-
-
- + + + + + + + + Entgra UEM Server + + + + + + + + + + + + + + +
+ +
+
+
+ + +
+
+ +
+ + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + +
+
+

Hi $first-name,

+

+

Welcome to your free Entgra UEM trial. Please download the product here.

+
+

To make the best use of your evaluation, here's a quick introduction to the key capabilities of our product.

+
+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + +
+

Getting started

+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + + + + + + + + +
+
+

Self-guided enrollment

+
+
+ + + + + + +
+
+

Wizard-based, simple, and clear directions for the best mode of enrollment suited for your requirements.

+
+
+ +
+ +
+
+ + +
+
+ +
+ + + + + + + + + + + + + + +
+
+

Guided UI tour

+

+
+
+ + + + + + +
+
+

Guided walkthrough of Entgra UEM for quick navigation of available
features and functionalities.

+
+
+ +
+ +
+
+ + +
+
+ +
+ + + + + + + + + + + + + + +
+
+

Live chat

+

+
+
+ + + + + + +
+
+

Instant access to our support team to get answers to your questions.

+
+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + +
+ + + + + + +
+   +
+
+ + + + + + +
+

Remote administration

+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + + + + + + + + +
+
+

Zero-touch enrollment

+
+
+ + + + + + +
+
+

Enroll, administer, and manage your entire device fleet remotely. Find out how to do so here.

+
+
+ +
+ +
+
+ + +
+
+ +
+ + + + + + + + + + + + + + +
+
+

Hierarchical grouping

+
+
+ + + + + + +
+
+

Create groups and subgroups in a hierarchical manner via our enhanced UI functionality.

+
+
+ +
+ +
+
+ + +
+
+ +
+ + + + + + + + + + + + + + +
+
+

Trigger operations simultaneously in a device group

+
+
+ + + + + + +
+
+

Enforce one or more operations on individual devices of an entire device group at once.

+
+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + + + + + + + + +
+
+

Enforceable policies for device administration

+
+
+ + + + + + + + +
+ +
+
+ + +
+
+ +
+ + + + + + + + + + + + + + +
+
+

Geofencing and alerts

+

+
+
+ + + + + + + + +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + +
+ + + + + + +
+   +
+
+ + + + + + +
+

UI, analytics, reporting, and real-time processing

+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + + + + + + + + +
+
+

Reporting UI capabilities +

+

real-time event processing

+
+
+ + + + + + +
+
+

Demonstrative reporting UI
with a set of pre-built reports useful for EMM administration. Enables real-time complex event processing and an

+

in-house solution for batch processing so that you can create customized reports.

+
+
+ +
+ +
+
+ + +
+
+ +
+ + + + + + + + + + + + + + +
+
+

Grafana-based dashboards

+

+
+
+ + + + + + +
+
+

Analytics capabilities and dashboards showing useful information on devices, users, applications, operations, and policies.

+
+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + + + + + + + + +
+
+

Live feed

+
+
+ + + + + + +
+
+

Live feed is now available remotely for system administrators to access and track device data remotely, plus perform troubleshooting in real-time.

+
+
+ +
+ +
+
+ + +
+
+ +
+ + + + + + + + + + + + + + +
+
+

Per-tenant theming

+
+
+ + + + + + +
+
+

Customize your branding assets such as logos, favicons, app title/footer, etc. for a unified, personalized experience.

+
+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + +
+ + + + + + +
+   +
+
+ + + + + + +
+

Security, privacy, and compliance

+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + + + + + + + + +
+
+

GDPR compliance

+
+
+ + + + + + +
+
+

Compliant with GDPR.

+
+
+ +
+ +
+
+ + +
+
+ +
+ + + + + + + + + + + + + + +
+
+

Consent management

+
+
+ + + + + + +
+
+

Requires the consent of authoritative parties when signing in to the platform and enrolling devices. Cookie and privacy policies in the device management console for consent.

+
+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + + + + + + + + +
+
+

Device protection and security

+
+
+ + + + + + +
+
+

Fetch the device location and/or lock the device remotely. Configure devices in a manner that they become locked when passcode fail attempts exceed the limit. Offline unenrollment is possible via a special admin PIN code per device.

+
+
+ +
+ +
+
+ + +
+
+ +
+ + + + + + + + + + + + + + +
+
+

Additional data protection

+
+
+ + + + + + +
+
+

Use enterprise-wipe to delete the enterprise portion of a device in case of device loss or theft. Clear app data of corporate apps remotely. Lock-in
devices to a given WiFi network to ensure adherence to data protection compliance regulations.

+
+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + +
+ + + + + + +
+   +
+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + +
+

More resources

+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+ + +
+
+ +
+ + + + + + + + + + + + + + +
+ +
+ + + Blog + + +
+
+ +
+ +
+
+ + +
+
+ +
+ + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + +
+ + + + + + +
+   +
+
+ + + + + + +
+
+

That’s Entgra UEM in a nutshell. Reach out to us at evaluations@entgra.io if you have any questions.

+


Thanks for taking the time to explore Entgra UEM’s capabilities.

+


Entgra team

+
+
+ + + + + + +
+ + + + + + +
+   +
+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + +
+ +
+ + + + + + +
+
+

Follow Entgra on social media

+
+
+ + + + + + +
+
+
+ + + + + + + + +
+ + Facebook + +
+ + + + + + + + +
+ + LinkedIn + +
+ + + + + + + + +
+ + X + +
+ + + + + + + + +
+ + YouTube + +
+ + +
+
+
+ +
+ +
+
+ + +
+
+
+ +
+ + + ]]> -
+ \ No newline at end of file diff --git a/features/transport-mgt/email-sender/io.entgra.device.mgt.core.email.sender.feature/src/main/resources/email/templates/user-verify.vm b/features/transport-mgt/email-sender/io.entgra.device.mgt.core.email.sender.feature/src/main/resources/email/templates/user-verify.vm index bccc1cc0e0..c053cd889b 100644 --- a/features/transport-mgt/email-sender/io.entgra.device.mgt.core.email.sender.feature/src/main/resources/email/templates/user-verify.vm +++ b/features/transport-mgt/email-sender/io.entgra.device.mgt.core.email.sender.feature/src/main/resources/email/templates/user-verify.vm @@ -16,47 +16,430 @@ under the License. *# - Verify email to register with Entgra IoTS + Verify Email to Register with Entgra UEM Server - - Entgra IoT Server - - -
-
-
-
- entgra -
-
-
-

- Hi $first-name, -

-

- Congratulations!!! Thank you for registering with Entgra. Please click on the - following link to complete your registration with us. Click here. -

- -

- If you need further assistance, please contact your administrator. -

- -

- Regards, -

- -

- Entgra IoT Administrator -

-
-
-
- + + + + + + + + Entgra UEM Server + + + + + + + + + + + + + + +
+ +
+
+
+ + +
+
+ +
+ + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + +
+
+

Hi $first-name,

+


Thanks for your interest in Entgra. Please click here to complete your registration.

+


Once you verify your email address, you can check out all the features of our product.

+


Do get in touch with your administrator for any assistance at evaluations@entgra.io

+


Best wishes,
Entgra team

+
+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + +
+ + + + + + +
+   +
+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + +
+ +
+ + + + + + +
+
+

Follow Entgra on social media

+
+
+ + + + + + +
+
+
+ + + + + + + + +
+ + Facebook + +
+ + + + + + + + +
+ + LinkedIn + +
+ + + + + + + + +
+ + X + +
+ + + + + + + + +
+ + YouTube + +
+ + +
+
+
+ +
+ +
+
+ + +
+
+
+ +
+ + + ]]> -
+ \ No newline at end of file diff --git a/features/transport-mgt/email-sender/io.entgra.device.mgt.core.email.sender.feature/src/main/resources/email/templates/user-welcome.vm b/features/transport-mgt/email-sender/io.entgra.device.mgt.core.email.sender.feature/src/main/resources/email/templates/user-welcome.vm index 7560594911..e8302f9ca9 100644 --- a/features/transport-mgt/email-sender/io.entgra.device.mgt.core.email.sender.feature/src/main/resources/email/templates/user-welcome.vm +++ b/features/transport-mgt/email-sender/io.entgra.device.mgt.core.email.sender.feature/src/main/resources/email/templates/user-welcome.vm @@ -19,80 +19,904 @@ Welcome to Entgra Evaluation Cloud - - Entgra IoT Server - - -
-
-
-
- entgra -
-
-
-

- Hi $first-name, -

-
-

- Welcome to Entgra Evaluation Cloud!! Entgra server support offers managing Android, iOS and Windows - devices along with a wide range of features that support cooperate (COPE) or personal device (BYOD) - enrollments. -

-
-
-

Access different portals

-

Your log-in credentials to any of our portals(endpoint-mgt, store, publisher) are,

-

Username: $portal-username

-

Password: password provided at registration for an evaluation account.

-

Endpoint management portal URL: $base-url-https/endpoint-mgt/

-

- This is the portal used to send operations and policies to devices and overall management of - the server. -

-

Application store portal URL: $base-url-https/store

-

- This is an in-house corporate app store where you can host all your corporate applications. - Users may browse apps and install them to their devices if the administrator has made the apps - publicly visible to users. Administrator can install, uninstall and update apps in the user - device or device groups. -

-

Application publishing portal URL: $base-url-https/publisher

-

- The portal for publishing new applications for internal use. This is the developer view of the - enterprise application store that comes with the product. -

-
-
-

Enroll a device

-

- Please find here a set of videos on how to enroll and onboard devices to our Cloud platform. - [Cloud Enrollment Guide] - When enrolling a device, Make sure to use the following log-in format: -

-

Organisation: $tenant-domain

-

Username: $agent-username

-

Password: password provided at registration.

-
-
-

- If you have any further questions, please reach out to us using your registered mail to - bizdev-group@entgra.io. Looking forward to working with you. -

-

- Best Regards, -

-

- Entgra Cloud Team -

-
-
+ + + + + + + + Entgra UEM Server + + + + + + + + + + + +
+ +
+
+
+ + +
+
+ +
+ + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + +
+
+

Hi $first-name,

+

+

Thanks for registering for a free 14-day Entgra Cloud trial.

+

Entgra enables you to manage Android, iOS, and Windows devices. Our product also has a wide range of capabilities for corporate-owned (COPE) and personal device (BYOD) enrollments.

+


Listed below are some instructions to guide you.

+
+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + +
+

How to Access Our Portals

+
+ + + + + + +
+
+

Please use the following log-in credentials to access any of our portals.

+


Username: $portal-username
Password: Password provided at registration

+
+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+
+ + +
+
+ +
+ + + + + + + +
+
+

Endpoint Management Portal

+
+
+ + + + + + +
+
+

Send operations and apply policies to devices and overall management of the server.

+
+
+ + + + + + +
+ + +
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + +
+ + + + + + +
+   +
+
+ + + + + + +
+
+

Application Store Portal

+
+
+ + + + + + +
+
+

In-house corporate app store to host all your corporate applications. You can browse apps and install them on your devices if the apps are publicly visible to users. Administrators can install, uninstall, and update apps on devices or device groups.

+
+
+ + + + + + +
+ + +
+ +
+ +
+
+ + +
+
+ +
+ + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+
+ + +
+
+ +
+ + + + + + + +
+ + + + + + +
+   +
+
+ + + + + + +
+
+

Application Publishing Portal

+
+
+ + + + + + +
+
+

Publish new applications for internal use. This portal gives you a developer's view of the enterprise application store that comes with the product.

+
+
+ + + + + + +
+ + +
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + +
+

How to Enroll a Device

+
+ + + + + + +
+
+

Here's the comprehensive guide to enrolling and onboarding devices.

+


View guide

+


For questions, contact us at evaluations@entgra.io from your Entgra registered email address.

+


We hope you found this guide helpful and look forward to learning more about your experiences with Entgra.

+

+


Best wishes,
Entgra team

+
+
+ + + + + + +
+ + + + + + +
+   +
+
+ +
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ +
+ + + + + + + +
+ +
+ + + + + + +
+
+

Follow Entgra on social media

+
+
+ + + + + + +
+
+
+ + + + + + + + +
+ + Facebook + +
+ + + + + + + + +
+ + LinkedIn + +
+ + + + + + + + +
+ + X + +
+ + + + + + + + +
+ + YouTube + +
+ + +
+
+
+ +
+ +
+
+ + +
+
+
+ +
+ + + ]]> - + \ No newline at end of file