--- title: DMClient DDF file description: Learn about the OMA DM device description framework (DDF) for the DMClient configuration service provider (CSP). ms.reviewer: manager: aaroncz ms.author: vinpa ms.topic: article ms.prod: w10 ms.technology: windows author: vinaypamnani-msft ms.date: 12/05/2017 --- # DMClient DDF file This topic shows the OMA DM device description framework (DDF) for the **DMClient** configuration service provider. DDF files are used only with OMA DM provisioning XML. Looking for the DDF XML files? See [CSP DDF files download](configuration-service-provider-reference.md#csp-ddf-files-download). The XML below is for Windows 10, version 1803. ```xml ]> 1.2 DMClient ./User/Vendor/MSFT com.microsoft/1.5/MDM/DMClient Provider text/plain FirstSyncStatus ExpectedPolicies This node contains a list of LocURIs that refer to Policies the ISV expects to provision, delimited by the character L"\xF000" (the CSP_LIST_DELIMITER). This is per user. text/plain ExpectedNetworkProfiles This node contains a list of LocURIs that refer to Wi-Fi profiles and VPN profiles the ISV expects to provision, delimited by the character L"\xF000". This is per user. text/plain ExpectedMSIAppPackages This node contains a list of LocURIs that refer to App Packages the ISV expects to provision via EnterpriseDesktopAppManagement CSP, delimited by the character L"\xF000". The LocURI will be followed by a semicolon and a number, representing the amount of apps included in the App Package. We will not verify that number. E.G. ./User/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/ProductID1/Status;4"\xF000" ./User/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/ProductID2/Status;2 Which will represent that App Package ProductID1 contains 4 apps, whereas ProductID2 contains 2 apps. This is per user. text/plain ExpectedModernAppPackages This node contains a list of LocURIs that refer to App Packages the ISV expects to provision via EnterpriseModernAppManagement CSP, delimited by the character L"\xF000". The LocURI will be followed by a semicolon and a number, representing the amount of apps included in the App Package. We will not verify that number. E.G. ./Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/AppStore/PackageFamilyName/PackageFullName/Name;4"\xF000" ./Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/AppStore/PackageFamilyName/PackageFullName2/Name;2 Which will represent that App Package PackageFullName contains 4 apps, whereas PackageFullName2 contains 2 apps. This is per user. text/plain ExpectedPFXCerts This node contains a list of LocURIs that refer to certs the ISV expects to provision via ClientCertificateInstall CSP, delimited by the character L"\xF000" (the CSP_LIST_DELIMITER). This is per user. text/plain ExpectedSCEPCerts This node contains a list of LocURIs that refer to SCEP certs the ISV expects to provision via ClientCertificateInstall CSP, delimited by the character L"\xF000" (the CSP_LIST_DELIMITER). This is per user. text/plain ServerHasFinishedProvisioning This node is set by the server to inform the UX that the server has finished provisioning the device. This was added so that the server can “change its mind" about what it needs to provision on the device. When this node is set, many other DM Client nodes will no longer be able to be changed. If this node is not True, the UX will consider the provisioning a failure. Once set to true, it would reject attempts to change it back to false with CFGMGR_E_COMMANDNOTALLOWED. This node applies to the per user expected policies and resources lists. text/plain IsSyncDone This node, when doing a get, tells the server if the “First Syncs" are done and the device is fully provisioned. When doing a Set, this triggers the UX to override whatever state it is in and tell the user that the device is provisioned. It cannot be set from True to False (it will not change its mind on whether or not the sync is done), and it cannot be set from True to True (to prevent notifications from firing multiple times). This node only applies to the user MDM status page (on a per user basis). text/plain WasDeviceSuccessfullyProvisioned Integer node determining if a Device was Successfully provisioned. 0 is failure, 1 is success, 2 is in progress. Once the value is changed to 0 or 1, the value cannot be changed again. The client will change the value of success or failure and update the node. The server can, however, force a failure or success message to appear on the device by setting this value and then setting the IsSyncDone node to true. This node only applies to the user MDM status page (on a per user basis). text/plain AllowCollectLogsButton false This node decides whether or not the MDM progress page displays the Collect Logs button. This node only applies to the user MDM status page (on a per user basis). text/plain CustomErrorText This node allows the MDM to set custom error text, detailing what the user needs to do in case of error. This node only applies to the user MDM status page (on a per user basis). text/plain DMClient ./Device/Vendor/MSFT com.microsoft/1.4/MDM/DMClient Provider text/plain EntDeviceName text/plain ExchangeID text/plain EntDMID text/plain SignedEntDMID text/plain CertRenewTimeStamp text/plain PublisherDeviceID text/plain ManagementServiceAddress text/plain UPN text/plain HelpPhoneNumber text/plain HelpWebsite text/plain HelpEmailAddress text/plain RequireMessageSigning text/plain SyncApplicationVersion text/plain MaxSyncApplicationVersion text/plain Unenroll text/plain AADResourceID text/plain AADDeviceID Device ID used for AAD device registration text/plain EnrollmentType Type of MDM enrollment text/plain EnableOmaDmKeepAliveMessage text/plain HWDevID text/plain ManagementServerAddressList text/plain CommercialID text/plain ManagementServerToUpgradeTo Specify the Discovery server URL of the MDM server to upgrade to for a MAM enrolled device text/plain NumberOfDaysAfterLostContactToUnenroll Number of days after last successful sync to unenroll text/plain AADSendDeviceToken Send the device Azure Active Directory token, if the user one can't be returned text/plain Push PFN text/plain ChannelURI text/plain Status text/plain Poll IntervalForFirstSetOfRetries text/plain NumberOfFirstRetries text/plain IntervalForSecondSetOfRetries text/plain NumberOfSecondRetries text/plain IntervalForRemainingScheduledRetries text/plain NumberOfRemainingScheduledRetries text/plain PollOnLogin text/plain AllUsersPollOnFirstLogin text/plain CustomEnrollmentCompletePage Title text/plain BodyText text/plain HyperlinkHref text/plain HyperlinkText text/plain FirstSyncStatus ExpectedPolicies This node contains a list of LocURIs that refer to Policies the ISV expects to provision, delimited by the character L"\xF000" (the CSP_LIST_DELIMITER). text/plain ExpectedNetworkProfiles This node contains a list of LocURIs that refer to Wi-Fi profiles and VPN profiles the ISV expects to provision, delimited by the character L"\xF000". text/plain ExpectedMSIAppPackages This node contains a list of LocURIs that refer to App Packages the ISV expects to provision via EnterpriseDesktopAppManagement CSP, delimited by the character L"\xF000". The LocURI will be followed by a semicolon and a number, representing the amount of apps included in the App Package. We will not verify that number. E.G. ./User/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/ProductID1/Status;4"\xF000" ./User/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/ProductID2/Status;2 Which will represent that App Package ProductID1 contains 4 apps, whereas ProductID2 contains 2 apps. text/plain ExpectedModernAppPackages This node contains a list of LocURIs that refer to App Packages the ISV expects to provision via EnterpriseModernAppManagement CSP, delimited by the character L"\xF000". The LocURI will be followed by a semicolon and a number, representing the amount of apps included in the App Package. We will not verify that number. E.G. ./Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/AppStore/PackageFamilyName/PackageFullName/Name;4"\xF000" ./Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/AppStore/PackageFamilyName/PackageFullName2/Name;2 Which will represent that App Package PackageFullName contains 4 apps, whereas PackageFullName2 contains 2 apps. text/plain ExpectedPFXCerts This node contains a list of LocURIs that refer to certs the ISV expects to provision via ClientCertificateInstall CSP, delimited by the character L"\xF000" (the CSP_LIST_DELIMITER). text/plain ExpectedSCEPCerts This node contains a list of LocURIs that refer to SCEP certs the ISV expects to provision via ClientCertificateInstall CSP, delimited by the character L"\xF000" (the CSP_LIST_DELIMITER). text/plain TimeOutUntilSyncFailure This node determines how long we will poll until we surface an error message to the user. The unit of measurement is minutes. Default value will be 60, while maximum value will be 1,440 (one day). text/plain ServerHasFinishedProvisioning This node is set by the server to inform the UX that the server has finished provisioning the device. This was added so that the server can “change its mind" about what it needs to provision on the device. When this node is set, many other DM Client nodes will no longer be able to be changed. If this node is not True, the UX will consider the provisioning a failure. Once set to true, it would reject attempts to change it back to false with CFGMGR_E_COMMANDNOTALLOWED. This node applies to the per user expected policies and resources lists. text/plain IsSyncDone This node, when doing a get, tells the server if the “First Syncs" are done and the device is fully provisioned. When doing a Set, this triggers the UX to override whatever state it is in and tell the user that the device is provisioned. It cannot be set from True to False (it will not change its mind on whether or not the sync is done), and it cannot be set from True to True (to prevent notifications from firing multiple times). This node only applies to the user MDM status page (on a per user basis). text/plain WasDeviceSuccessfullyProvisioned Integer node determining if a Device was Successfully provisioned. 0 is failure, 1 is success, 2 is in progress. Once the value is changed to 0 or 1, the value cannot be changed again. The client will change the value of success or failure and update the node. The server can, however, force a failure or success message to appear on the device by setting this value and then setting the IsSyncDone node to true. This node only applies to the user MDM status page (on a per user basis). text/plain BlockInStatusPage 0 Device Only. This node determines whether or not the MDM progress page is blocking in the Azure Active Directory-joined or DJ++ case, as well as which remediation options are available. text/plain AllowCollectLogsButton false This node decides whether or not the MDM progress page displays the Collect Logs button. This node only applies to the device MDM status page. text/plain CustomErrorText This node allows the MDM to set custom error text, detailing what the user needs to do in case of error. This node only applies to the user MDM status page (on a per user basis). text/plain SkipDeviceStatusPage true Device only. This node decides whether or not the MDM device progress page skips after Azure Active Directory-joined or Hybrid Azure AD-joined in OOBE. text/plain SkipUserStatusPage false Device only. This node decides wheter or not the MDM user progress page skips after Azure Active Directory-joined or DJ++ after user login. text/plain EnhancedAppLayerSecurity SecurityMode This node specifies how the client will perform the app layer signing and encryption. 0: no op; 1: sign only; 2: encrypt only; 3: sign and encrypt. The default value is 0. text/plain UseCertIfRevocationCheckOffline This node, when it is set, tells the client to use the certificate even when the client cannot check the certificate's revocation status because the device is offline. The default value is set. text/plain Cert0 The node contains the primary certificate - the public key to use. text/plain Cert1 The node contains the secondary certificate - the public key to use. text/plain Unenroll text/plain UpdateManagementServiceAddress text/plain HWDevID text/plain ```