From 1a8ebcbee9fe7cee4904bc82b3bcd19edd06cae3 Mon Sep 17 00:00:00 2001 From: Vinay Pamnani <37223378+vinaypamnani-msft@users.noreply.github.com> Date: Mon, 11 Sep 2023 18:53:40 -0400 Subject: [PATCH 01/12] Structure draft for DeclaredConfiguration --- .../mdm/declared-configuration-dsc.md | 10 ++++++++++ .../mdm/declared-configuration-extensibility.md | 10 ++++++++++ .../mdm/declared-configuration.md | 10 ++++++++++ .../mdm/declaredconfiguration-csp.md | 16 ++++++++++++++++ windows/client-management/mdm/toc.yml | 9 +++++++++ 5 files changed, 55 insertions(+) create mode 100644 windows/client-management/mdm/declared-configuration-dsc.md create mode 100644 windows/client-management/mdm/declared-configuration-extensibility.md create mode 100644 windows/client-management/mdm/declared-configuration.md create mode 100644 windows/client-management/mdm/declaredconfiguration-csp.md diff --git a/windows/client-management/mdm/declared-configuration-dsc.md b/windows/client-management/mdm/declared-configuration-dsc.md new file mode 100644 index 0000000000..e6dc588bbe --- /dev/null +++ b/windows/client-management/mdm/declared-configuration-dsc.md @@ -0,0 +1,10 @@ +--- +title: Authoring DSC resources for Declared Configuration +description: Learn more about authoring DSC resources for Declared Configuration +ms.date: 09/11/2023 +ms.topic: how-to +--- + +# Authoring DSC resources for Declared Configuration + +[TODO] diff --git a/windows/client-management/mdm/declared-configuration-extensibility.md b/windows/client-management/mdm/declared-configuration-extensibility.md new file mode 100644 index 0000000000..a3cecffa87 --- /dev/null +++ b/windows/client-management/mdm/declared-configuration-extensibility.md @@ -0,0 +1,10 @@ +--- +title: Declared Configuration Extensibility +description: Learn more about Declared Configuration extensibility +ms.date: 09/11/2023 +ms.topic: how-to +--- + +# Declared Configuration Extensibility + +[TODO] diff --git a/windows/client-management/mdm/declared-configuration.md b/windows/client-management/mdm/declared-configuration.md new file mode 100644 index 0000000000..7140266f88 --- /dev/null +++ b/windows/client-management/mdm/declared-configuration.md @@ -0,0 +1,10 @@ +--- +title: Declared Configuration protocol support +description: Learn more about Declared Configuration protocol support +ms.date: 09/11/2023 +ms.topic: overview +--- + +# Declared Configuration protocol support + +[TODO] diff --git a/windows/client-management/mdm/declaredconfiguration-csp.md b/windows/client-management/mdm/declaredconfiguration-csp.md new file mode 100644 index 0000000000..b7802e8ef8 --- /dev/null +++ b/windows/client-management/mdm/declaredconfiguration-csp.md @@ -0,0 +1,16 @@ +--- +title: DeclaredConfiguration CSP +description: Learn more about the DeclaredConfiguration CSP. +author: vinaypamnani-msft +manager: aaroncz +ms.author: vinpa +ms.date: 09/11/2023 +ms.localizationpriority: medium +ms.prod: windows-client +ms.technology: itpro-manage +ms.topic: reference +--- + +# DeclaredConfiguration CSP + +[TODO] diff --git a/windows/client-management/mdm/toc.yml b/windows/client-management/mdm/toc.yml index 9125eb9388..b895b7561a 100644 --- a/windows/client-management/mdm/toc.yml +++ b/windows/client-management/mdm/toc.yml @@ -29,6 +29,15 @@ items: href: ../structure-of-oma-dm-provisioning-files.md - name: Server requirements for OMA DM href: ../server-requirements-windows-mdm.md + - name: Declared Configuration protocol support + href: ../declared-configuration.md + items: + - name: Declared Configuration Extensibility + href: ../declared-configuration-extensibility.md + - name: DeclaredConfiguration CSP + href: ../declaredconfiguration-csp.md + - name: Authoring DSC resources + href: ../declared-configuration-dsc.md - name: Configuration service providers (CSPs) expanded: true items: From 76630d032e959421eb9a14684a013f9b7a1e7af0 Mon Sep 17 00:00:00 2001 From: Vinay Pamnani <37223378+vinaypamnani-msft@users.noreply.github.com> Date: Mon, 11 Sep 2023 19:01:33 -0400 Subject: [PATCH 02/12] Fix links --- .../client-management/{mdm => }/declared-configuration-dsc.md | 0 .../{mdm => }/declared-configuration-extensibility.md | 0 windows/client-management/{mdm => }/declared-configuration.md | 0 windows/client-management/mdm/toc.yml | 2 +- 4 files changed, 1 insertion(+), 1 deletion(-) rename windows/client-management/{mdm => }/declared-configuration-dsc.md (100%) rename windows/client-management/{mdm => }/declared-configuration-extensibility.md (100%) rename windows/client-management/{mdm => }/declared-configuration.md (100%) diff --git a/windows/client-management/mdm/declared-configuration-dsc.md b/windows/client-management/declared-configuration-dsc.md similarity index 100% rename from windows/client-management/mdm/declared-configuration-dsc.md rename to windows/client-management/declared-configuration-dsc.md diff --git a/windows/client-management/mdm/declared-configuration-extensibility.md b/windows/client-management/declared-configuration-extensibility.md similarity index 100% rename from windows/client-management/mdm/declared-configuration-extensibility.md rename to windows/client-management/declared-configuration-extensibility.md diff --git a/windows/client-management/mdm/declared-configuration.md b/windows/client-management/declared-configuration.md similarity index 100% rename from windows/client-management/mdm/declared-configuration.md rename to windows/client-management/declared-configuration.md diff --git a/windows/client-management/mdm/toc.yml b/windows/client-management/mdm/toc.yml index b895b7561a..47f2e2a0a9 100644 --- a/windows/client-management/mdm/toc.yml +++ b/windows/client-management/mdm/toc.yml @@ -35,7 +35,7 @@ items: - name: Declared Configuration Extensibility href: ../declared-configuration-extensibility.md - name: DeclaredConfiguration CSP - href: ../declaredconfiguration-csp.md + href: declaredconfiguration-csp.md - name: Authoring DSC resources href: ../declared-configuration-dsc.md - name: Configuration service providers (CSPs) From c83cc2966881e9baaff3a3e7600c44fa7cdba392 Mon Sep 17 00:00:00 2001 From: Vinay Pamnani <37223378+vinaypamnani-msft@users.noreply.github.com> Date: Tue, 12 Sep 2023 13:58:14 -0400 Subject: [PATCH 03/12] First draft --- .../declared-configuration-extensibility.md | 244 +++++++++++++++++- .../declared-configuration.md | 64 ++++- .../images/declared-configuration-model.png | Bin 0 -> 38764 bytes windows/client-management/mdm/dmclient-csp.md | 6 +- windows/client-management/mdm/toc.yml | 6 +- 5 files changed, 307 insertions(+), 13 deletions(-) create mode 100644 windows/client-management/images/declared-configuration-model.png diff --git a/windows/client-management/declared-configuration-extensibility.md b/windows/client-management/declared-configuration-extensibility.md index a3cecffa87..8a95d39a56 100644 --- a/windows/client-management/declared-configuration-extensibility.md +++ b/windows/client-management/declared-configuration-extensibility.md @@ -1,10 +1,248 @@ --- title: Declared Configuration Extensibility -description: Learn more about Declared Configuration extensibility +description: Learn more about Declared Configuration extensibility through native WMI providers. ms.date: 09/11/2023 ms.topic: how-to --- -# Declared Configuration Extensibility +# Declared Configuration Extensibility Providers -[TODO] +The Declared Configuration enrollment supporting the Declared Configuration client stack, offers Extensibility through native WMI providers. This feature instantiates and interfaces with a Windows Management Instrumentation (WMI) provider that has implemented an MI interface. The interface must implement GetTargetResource, TestTargetResource, and SetTargetResource methods, and may implement any number of string properties. + +> [!NOTE] +> Only string properties are currently supported by Extensibility providers. + +```mof +[static, Description ("Get resource state based on input configuration file." )] +uint32 GetTargetResource( + [in, EmbeddedInstance ("MSFT_FileDirectoryConfiguration"), Description ("Configuration document that is to be applied.")] + string InputResource, + [in, Description ("Flags passed to the provider. Reserved for future use." )] + uint32 Flags, + [out, EmbeddedInstance ("MSFT_FileDirectoryConfiguration"), Description ("The current state of the specified configuration resources." )] + string OutputResource +); + +[static, Description ("Test resource state based on input configuration file." )] +uint32 TestTargetResource( + [in, EmbeddedInstance("MSFT_FileDirectoryConfiguration"), Description ("Configuration document to be applied." )] + string InputResource, + [in, Description ("Flags passed to the provider. reserved for future use." )] + uint32 Flags, + [out, Description ("True if identical. False otherwise." )] + boolean Result, + [out, Description ("Context information the provider can use to optimize the set. This is optional." )] + uint64 ProviderContext +); + +[static, Description ("Set resource state based on input configuration file." )] +uint32 SetTargetResource( + [in, EmbeddedInstance ("MSFT_FileDirectoryConfiguration"), + Description ("Configuration document to be applied." )] + string InputResource, + [in, Description ("Context information the provider can use to optimize the set from SetTargetResource. This is optional." )] + uint64 ProviderContext, + [in, Description ("Flags passed to the provider. reserved for future use." )] + uint32 Flags +); +``` + +## Author DSC resources + +To create a native WMI provider, follow the steps outlined in [How to Implement an MI Provider](/previous-versions/windows/desktop/wmi_v2/how-to-implement-an-mi-provider). These steps include generating the source code for MI interface using Convert-MofToProvider.exe tool to generate the DLL and prepare it for placement. + +1. Create a MOF file that defines the schema for DSC resource including parameters and methods. This file includes the required parameters for the resource. +2. Copy the schema MOF file along with any required files into the provided tools directory, i.e. ProviderGenerationTool. +3. Edit the required files and include the correct file names and class names. +4. Invoke the provider generator tool to generate provider's project files. +5. Copy the generated files into the provider's project folder. +6. Start the development process. + +### Example + +This example shows how to generate the initial source code for a sample resource. + +### Step 1: Create the Resource Schema File in MOF Format + +This is the sample schema MOF file used to generate the initial source code for the `MSFT_FileDirectoryConfiguration` native resource. + +```mof +#pragma include ("cim_schema_2.26.0.mof") +#pragma include ("OMI_BaseResource.mof") +#pragma include ("MSFT_Credential.mof") + +[ClassVersion("1.0.0"), Description("The configuration provider for files and directories.")] +class MSFT_FileDirectoryConfiguration : OMI_BaseResource +{ + [Key, Description("File name and path on target node to copy or create.")] + string DestinationPath; + + [Write, Description("The name and path of the file to copy from.")] + string SourcePath; + + [Write, Description("Contains a string that represents the contents of the file. To create an empty file, the string must be empty. The contents will be written and compared using UTF-8 character encoding.")] + string Contents; + + [static, Description ("Get resource states based on input configuration file." )] + uint32 GetTargetResource( + [in, EmbeddedInstance ("MSFT_FileDirectoryConfiguration"), Description ("Configuration document that is to be applied." )] + string InputResource, + + [in,Description ("Flags passed to the providers. Reserved for future use." )] + uint32 Flags, + + [out, EmbeddedInstance ("MSFT_FileDirectoryConfiguration"), Description ("The current state of the specified configuration resources." )] + string OutputResource + ); + + [static, Description ("Test resource states based on input configuration file." )] + uint32 TestTargetResource( + [in, EmbeddedInstance("MSFT_FileDirectoryConfiguration"), Description ("Configuration document that to be applied." )] + string InputResource, + + [in, Description ("Flags passed to the providers. reserved for future use." )] + uint32 Flags, + + [out, Description ("True if identical. False otherwise." )] + boolean Result, + + [out, Description ("Context information that the provider can use to optimize the set, This is optional." )] + uint64 ProviderContext + ); + + [static, Description ("Set resource states based on input configuration file." )] + uint32 SetTargetResource( + [in, EmbeddedInstance ("MSFT_FileDirectoryConfiguration"), Description ("Configuration document that to be applied." )] + string InputResource, + + [in, Description ("Context information that the provider can use to optimize the set from TestTargetResource, This is optional." )] + uint64 ProviderContext, + + [in, Description ("Flags passed to the providers. reserved for future use." )] + uint32 Flags + ); +}; +``` + +Note the following about the schema MOF files: + +- Class name and DLL file name should be the same; as defined in `Provider.DEF` file. +- The type qualifier, `[Key]`, on a property indicates that this property will uniquely identify the resource instance. At least one `[Key]` property is required. +- The `[Required]` qualifier indicates that the property is required (a value must be specified in any configuration script that uses this resource). +- The `[write]` qualifier indicates that this property is optional when using the custom resource in a configuration script. The `[read]` qualifier indicates that a property cannot be set by a configuration, and is for reporting purposes only. +- `[Values]` qualifier restricts the values that can be assigned to the property to the list of values defined in `[ValueMap]`. For more information, see [ValueMap and Value Qualifiers](/windows/win32/wmisdk/value-map). +- Any new MOF file should include the following lines at the top of the file: + + ```mof + #pragma include ("cim_schema_2.26.0.mof") + #pragma include ("OMI_BaseResource.mof") + #pragma include ("MSFT_Credential.mof") + ``` + +- Method names and its parameters should be same for every resource. Change `MSFT_FileDirectoryConfiguration` from EmbeddedInstance value to the class name of the desired provider. There should be only one provider per MOF file. + +### Step 2: Copy the schema MOF files + +Copy all the required files and folders to the project directory: + +- CIM-2.26.0 +- codegen.cmd +- Convert-MofToProvider.exe +- MSFT_Credential.mof +- MSFT_DSCResource.mof +- OMI_BaseResource.mof +- OMI_Errors.mof +- Provider.DEF +- wmicodegen.dll + +For more information, see [How to Implement an MI Provider](/previous-versions/windows/desktop/wmi_v2/how-to-implement-an-mi-provider). + +### Step 3: Edit the required files + +Modify the following files in the project directory: + +- MSFT_FileDirectoryConfiguration.mof: This is the file that was created in step 1. +- Provider.DEF: This file contains the DLL name, e.g. `MSFT_FileDirectoryConfiguration.dll`. +- codegen.cmd: This file contains the command to invoke `convert-moftoprovider.exe`. + + ```cmd + "convert-moftoprovider.exe" ^ + -MofFile MSFT_FileDirectoryConfiguration.mof ^ + MSFT_DSCResource.mof ^ + OMI_Errors.mof ^ + -ClassList MSFT_FileDirectoryConfiguration ^ + -IncludePath CIM-2.26.0 ^ + -ExtraClass OMI_Error ^ + MSFT_DSCResource ^ + -OutPath temp + ``` + +### Step 4: Invoke the provider generator tool + +Run `codegen.cmd` which invokes the `convert-moftoprovider.exe` command. Alternatively, you can run the command directly. + +### Step 5: Copy generated source files + +This example uses a `temp` folder that was specified as `-OutPath` parameter in the command from step 3 as the output and renames it to `MSFT_FileDirectoryConfiguration`. This is useful when resource parameters in the schema MOF file are modified. Because with each update to the schema MOF file, the codegen.cmd script to regenerate the source files must be executed again and this tool will overwrite the source files if they exist. So, to prevent that from overwriting the implementation, a temporary folder could be used. + +Moreover, it is best to minimize the updates to the schema MOF file since the main implementation should be merged with the most recent auto-generated source files. + +### Example MSFT_FileDirectoryConfiguration Resource + +After running the provider generator tool, it creates several source and header files including: + +- MSFT_FileDirectoryConfiguration.c +- MSFT_FileDirectoryConfiguration.h +- module.c +- schema.c +- WMIAdapter.c + +From this list, only `MSFT_FileDirectoryConfiguration.c` and `MSFT_FileDirectoryConfiguration.h` need modifications. The extension for the source files can be changed from `c` to `cpp` too (which is the case for this resource). The business logic for this resource is implemented in `MSFT_FileDirectoryConfigurationImp.cpp` and `MSFT_FileDirectoryConfigurationImp.h`. These new files are added to the MSFT_FileDirectoryConfiguration directory after the provider generator tool was invoked. + +There are three auto-generated functions in MSFT_FileDirectoryConfiguration.cpp that must be implemented for a native DSC resource: + +- MSFT_FileDirectoryConfiguration_Invoke_GetTargetResource +- MSFT_FileDirectoryConfiguration_Invoke_TestTargetResource +- MSFT_FileDirectoryConfiguration_Invoke_SetTargetResource + +From these three functions, only MSFT_FileDirectoryConfiguration_Invoke_GetTargetResource is required for a Get scenario. MSFT_FileDirectoryConfiguration_Invoke_TestTargetResource and MSFT_FileDirectoryConfiguration_Invoke_SetTargetResource are used when remediation is needed. Besides these three functions, there are several other auto-generated functions in MSFT_FileDirectoryConfiguration.cpp that don't need implementation for a native DSC resource and should be left as-is. + +- MSFT_FileDirectoryConfiguration_Load +- MSFT_FileDirectoryConfiguration_Unload +- MSFT_FileDirectoryConfiguration_EnumerateInstances +- MSFT_FileDirectoryConfiguration_GetInstance +- MSFT_FileDirectoryConfiguration_CreateInstance +- MSFT_FileDirectoryConfiguration_ModifyInstance +- MSFT_FileDirectoryConfiguration_DeleteInstance + +### Details on MSFT_FileDirectoryConfiguration_Invoke_GetTargetResource + +MSFT_FileDirectoryConfiguration_Invoke_GetTargetResource performs these steps to complete its task: + +1. Validate the input resource. +1. Ensure the keys and required parameters are present. +1. Create a resource instance that will be used as the output of the Get method. This instance is of type MSFT_FileDirectoryConfiguration which is derived from MI_Instance. +1. Create the output resource instance from the modified resource instance and return it to the MI client by calling these functions: + + - MSFT_FileDirectoryConfiguration_GetTargetResource_Construct + - MSFT_FileDirectoryConfiguration_GetTargetResource_SetPtr_OutputResource + - MSFT_FileDirectoryConfiguration_GetTargetResource_Set_MIReturn + - MSFT_FileDirectoryConfiguration_GetTargetResource_Post + - MSFT_FileDirectoryConfiguration_GetTargetResource_Destruct + +1. Make sure to clean up, e.g. free allocated memory. + +## MI implementation references + +- [Introducing new Management Infrastructure (MI) API](https://blogs.msdn.microsoft.com/wmi/2013/05/16/introducing-new-management-infrastructure-mi-api/) +- [Implementing MI Provider (1) - Overview](https://blogs.msdn.microsoft.com/wmi/2013/05/08/implementing-mi-provider-1-overview/) +- [Implementing MI Provider (2) - Define Schema](https://blogs.msdn.microsoft.com/wmi/2013/05/08/implementing-mi-provider-2-define-schema/) +- [Implementing MI Provider (3) - Generate Code](https://blogs.msdn.microsoft.com/wmi/2013/05/11/implementing-mi-provider-3-generate-code/) +- [Implementing MI Provider (4) - Generate Code (continue)](https://blogs.msdn.microsoft.com/wmi/2013/12/28/implementing-mi-provider-4-generate-code-continute/) +- [Implementing MI Provider (5) - Implement](https://blogs.msdn.microsoft.com/wmi/2013/12/28/implementing-mi-provider-5-implement/) +- [Implementing MI Provider (6) - Build, Register, and Debug](https://blogs.msdn.microsoft.com/wmi/2013/12/28/implementing-mi-provider-6-build-register-and-debug/) +- [MI Interfaces](/previous-versions/windows/desktop/wmi_v2/mi-interfaces) +- [MI Datatypes](/previous-versions/windows/desktop/wmi_v2/mi-datatypes) +- [MI Structures and Unions](/previous-versions/windows/desktop/wmi_v2/mi-structures-and-unions) +- [MI_Result Enumeration](/windows/win32/api/mi/ne-mi-mi_result) +- [MI_Type Enumeration](/windows/win32/api/mi/ne-mi-mi_type) diff --git a/windows/client-management/declared-configuration.md b/windows/client-management/declared-configuration.md index 7140266f88..668b5e533e 100644 --- a/windows/client-management/declared-configuration.md +++ b/windows/client-management/declared-configuration.md @@ -1,10 +1,66 @@ --- -title: Declared Configuration protocol support -description: Learn more about Declared Configuration protocol support +title: Declared Configuration protocol +description: Learn more about using Declared Configuration protocol for desired state management of Windows devices. ms.date: 09/11/2023 ms.topic: overview --- -# Declared Configuration protocol support +# What is Declared Configuration protocol -[TODO] +The Declared Configuration protocol is based on a desired state device configuration model though it still utilizes the underlying OMA-DM and Syncml protocol. Through a dedicated OMA-DM server, it provides all the settings in a single batch through this new protocol. The device's Declared Configuration client stack can reason over the settings to achieve the desired scenario in the most efficient and reliable manner. + +The Declared Configuration protocol requires that a device has a separate [OMA-DM enrollment](mdm-overview.md), which is dependent on the device being enrolled with the primary OMA-DM server. The desired state model is a completely different model from the current model where the Server is responsible for the device's desire state. This dual enrollment is only allowed if the device is already enrolled into a primary MDM Server. The new enrollment separates the desired state management functionality from the primary functionality. The Declared Configuration enrollment's first desired state management model feature is called [Extensibility](declared-configuration-extensibility.md). + +:::image type="content" source="images/declared-configuration-model.png" alt-text="Diagram illustrating the Declared configuration model."::: + +With the new [Declared Configuration CSP](mdm/declaredconfiguration-csp.md), the OMA-DM server can provide the device with the complete collection of setting names and associated values based on a specified scenario. The Declared Configuration stack on the device is responsible for handling the configuration request, and maintaining its state including updates to the scenario. + +The benefit of the Declared Configuration desired state model is that it is very efficient and accurate, especially given it is the responsibility of the Declared Configuration client to configure the device. The efficiency of Declared Configuration is in the fact that the batch of scenario settings are processed by the client asynchronously, freeing up the server resources to do other work. Thus, the Declared Configuration protocol has low latency. As for configuration quality and accuracy, the Declared Configuration client stack has intimate knowledge of the configuration surface area of the device including the proper handling of continuous device updates affecting the configuration scenario. + +## Declared Configuration enrollment + +[Mobile Device Enrollment Protocol Version 2](/openspecs/windows_protocols/ms-mde2/4d7eadd5-3951-4f1c-8159-c39e07cbe692) describes enrollment including discovery which covers the primary and Declared Configuration enrollments. The Declared Configuration dual enrollment is managed by new DMClient CSP nodes which are shown below: + +- [LinkedEnrollment/Priority](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentpriority) +- [LinkedEnrollment/Enroll](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentenroll) +- [LinkedEnrollment/Unenroll](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentunenroll) +- [LinkedEnrollment/EnrollStatus](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentenrollstatus) +- [LinkedEnrollment/LastError](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentlasterror) +- [LinkedEnrollment/DiscoveryEndpoint](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentdiscoveryendpoint) + +Here's a SyncML example for setting LinkedEnrolment/DiscoveryEndpoint and triggering LinkedEnrollment/Enroll: + +```xml + + + + 2 + + + ./Device/Vendor/MSFT/DMClient/Provider/MS%20DM%20SERVER/LinkedEnrollment/DiscoveryEndpoint + + https://discovery.dm.microsoft.com/EnrollmentConfiguration?api-version=1.0 + + + + + + + + + + 2 + + + ./Device/Vendor/MSFT/DMClient/Provider/MS%20DM%20SERVER/LinkedEnrollment/Enroll + + + + + + +``` + +## Related content + +- [Declared Configuration extensibility](declared-configuration-extensibility.md) diff --git a/windows/client-management/images/declared-configuration-model.png b/windows/client-management/images/declared-configuration-model.png new file mode 100644 index 0000000000000000000000000000000000000000..7708eedf5794602d22aaed9447c5a18e53cb4aa3 GIT binary patch literal 38764 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 -This is an execution node and will trigger a silent MMP-C enrollment, using the Azure Active Directory device token pulled from the Azure AD-joined device. There is no user interaction needed. +This is an execution node and will trigger a silent Declared Configuration enrollment, using the AAD device token pulled from the Azure AD-joined device. There is no user interaction needed. When the **DiscoveryEndpoint** is not set, the Enroll node will fail with `ERROR_FILE_NOT_FOUND (0x80070002)` and there is no scheduled task created for dual enrollment. @@ -2615,7 +2615,7 @@ Trigger Unenroll for the Linked Enrollment. -This is an execution node and will trigger a silent MMP-C unenroll, there is no user interaction needed. On un-enrollment, all the settings/resources set by MMPC will be rolled back. +This is an execution node and will trigger a silent Declared Configuration unenroll, without any user interaction. On un-enrollment, all the settings/resources set by Declared Configuration will be rolled back. @@ -3973,7 +3973,7 @@ The following SyncML shows how to remotely unenroll the device. This command sho ./Vendor/MSFT/DMClient/Provider//Unenroll - chr + chr TestMDMServer diff --git a/windows/client-management/mdm/toc.yml b/windows/client-management/mdm/toc.yml index 47f2e2a0a9..3737a668f3 100644 --- a/windows/client-management/mdm/toc.yml +++ b/windows/client-management/mdm/toc.yml @@ -29,15 +29,15 @@ items: href: ../structure-of-oma-dm-provisioning-files.md - name: Server requirements for OMA DM href: ../server-requirements-windows-mdm.md - - name: Declared Configuration protocol support + - name: Declared Configuration protocol href: ../declared-configuration.md items: - name: Declared Configuration Extensibility href: ../declared-configuration-extensibility.md - name: DeclaredConfiguration CSP href: declaredconfiguration-csp.md - - name: Authoring DSC resources - href: ../declared-configuration-dsc.md + - name: DMClient CSP + href: dmclient-csp.md - name: Configuration service providers (CSPs) expanded: true items: From d27b0e913a77915356462ee9d9d512d46731375a Mon Sep 17 00:00:00 2001 From: Vinay Pamnani <37223378+vinaypamnani-msft@users.noreply.github.com> Date: Tue, 12 Sep 2023 14:42:25 -0400 Subject: [PATCH 04/12] Some changes --- .../declared-configuration-extensibility.md | 67 ++++++++++--------- .../declared-configuration.md | 6 +- 2 files changed, 37 insertions(+), 36 deletions(-) diff --git a/windows/client-management/declared-configuration-extensibility.md b/windows/client-management/declared-configuration-extensibility.md index 8a95d39a56..82fe7e05bd 100644 --- a/windows/client-management/declared-configuration-extensibility.md +++ b/windows/client-management/declared-configuration-extensibility.md @@ -49,22 +49,22 @@ uint32 SetTargetResource( ## Author DSC resources -To create a native WMI provider, follow the steps outlined in [How to Implement an MI Provider](/previous-versions/windows/desktop/wmi_v2/how-to-implement-an-mi-provider). These steps include generating the source code for MI interface using Convert-MofToProvider.exe tool to generate the DLL and prepare it for placement. +To create a native WMI provider, follow the steps outlined in [How to Implement an MI Provider](/previous-versions/windows/desktop/wmi_v2/how-to-implement-an-mi-provider). These steps include generating the source code for MI interface using `Convert-MofToProvider.exe` tool to generate the DLL and prepare it for placement. 1. Create a MOF file that defines the schema for DSC resource including parameters and methods. This file includes the required parameters for the resource. -2. Copy the schema MOF file along with any required files into the provided tools directory, i.e. ProviderGenerationTool. +2. Copy the schema MOF file along with any required files into the provider tools directory, for example: ProviderGenerationTool. 3. Edit the required files and include the correct file names and class names. 4. Invoke the provider generator tool to generate provider's project files. 5. Copy the generated files into the provider's project folder. 6. Start the development process. -### Example +## Example -This example shows how to generate the initial source code for a sample resource. +This example provides more details about each step to demonstrate how to implement a sample native resource named `MSFT_FileDirectoryConfiguration`. ### Step 1: Create the Resource Schema File in MOF Format -This is the sample schema MOF file used to generate the initial source code for the `MSFT_FileDirectoryConfiguration` native resource. +Create a sample schema MOF file used to generate the initial source code for the `MSFT_FileDirectoryConfiguration` native resource and place it in the project directory named `MSFT_FileDirectoryConfiguration`. ```mof #pragma include ("cim_schema_2.26.0.mof") @@ -124,26 +124,26 @@ class MSFT_FileDirectoryConfiguration : OMI_BaseResource }; ``` -Note the following about the schema MOF files: - -- Class name and DLL file name should be the same; as defined in `Provider.DEF` file. -- The type qualifier, `[Key]`, on a property indicates that this property will uniquely identify the resource instance. At least one `[Key]` property is required. -- The `[Required]` qualifier indicates that the property is required (a value must be specified in any configuration script that uses this resource). -- The `[write]` qualifier indicates that this property is optional when using the custom resource in a configuration script. The `[read]` qualifier indicates that a property cannot be set by a configuration, and is for reporting purposes only. -- `[Values]` qualifier restricts the values that can be assigned to the property to the list of values defined in `[ValueMap]`. For more information, see [ValueMap and Value Qualifiers](/windows/win32/wmisdk/value-map). -- Any new MOF file should include the following lines at the top of the file: - - ```mof - #pragma include ("cim_schema_2.26.0.mof") - #pragma include ("OMI_BaseResource.mof") - #pragma include ("MSFT_Credential.mof") - ``` - -- Method names and its parameters should be same for every resource. Change `MSFT_FileDirectoryConfiguration` from EmbeddedInstance value to the class name of the desired provider. There should be only one provider per MOF file. +> [!NOTE] +> +> - Class name and DLL file name should be the same; as defined in `Provider.DEF` file. +> - The type qualifier, `[Key]`, on a property indicates that this property will uniquely identify the resource instance. At least one `[Key]` property is required. +> - The `[Required]` qualifier indicates that the property is required (a value must be specified in any configuration script that uses this resource). +> - The `[write]` qualifier indicates that this property is optional when using the custom resource in a configuration script. The `[read]` qualifier indicates that a property cannot be set by a configuration, and is for reporting purposes only. +> - `[Values]` qualifier restricts the values that can be assigned to the property to the list of values defined in `[ValueMap]`. For more information, see [ValueMap and Value Qualifiers](/windows/win32/wmisdk/value-map). +> - Any new MOF file should include the following lines at the top of the file: +> +> ```mof +> #pragma include ("cim_schema_2.26.0.mof") +> #pragma include ("OMI_BaseResource.mof") +> #pragma include ("MSFT_Credential.mof") +> ``` +> +> - Method names and its parameters should be same for every resource. Change `MSFT_FileDirectoryConfiguration` from EmbeddedInstance value to the class name of the desired provider. There should be only one provider per MOF file. ### Step 2: Copy the schema MOF files -Copy all the required files and folders to the project directory: +Copy these required files and folders to the project directory you created in step 1: - CIM-2.26.0 - codegen.cmd @@ -155,14 +155,14 @@ Copy all the required files and folders to the project directory: - Provider.DEF - wmicodegen.dll -For more information, see [How to Implement an MI Provider](/previous-versions/windows/desktop/wmi_v2/how-to-implement-an-mi-provider). +For more information on how to obtain the required files, see [How to Implement an MI Provider](/previous-versions/windows/desktop/wmi_v2/how-to-implement-an-mi-provider). ### Step 3: Edit the required files Modify the following files in the project directory: - MSFT_FileDirectoryConfiguration.mof: This is the file that was created in step 1. -- Provider.DEF: This file contains the DLL name, e.g. `MSFT_FileDirectoryConfiguration.dll`. +- Provider.DEF: This file contains the DLL name, for example, `MSFT_FileDirectoryConfiguration.dll`. - codegen.cmd: This file contains the command to invoke `convert-moftoprovider.exe`. ```cmd @@ -179,17 +179,18 @@ Modify the following files in the project directory: ### Step 4: Invoke the provider generator tool -Run `codegen.cmd` which invokes the `convert-moftoprovider.exe` command. Alternatively, you can run the command directly. +Run `codegen.cmd`, which invokes the `convert-moftoprovider.exe` command. Alternatively, you can run the command directly. ### Step 5: Copy generated source files -This example uses a `temp` folder that was specified as `-OutPath` parameter in the command from step 3 as the output and renames it to `MSFT_FileDirectoryConfiguration`. This is useful when resource parameters in the schema MOF file are modified. Because with each update to the schema MOF file, the codegen.cmd script to regenerate the source files must be executed again and this tool will overwrite the source files if they exist. So, to prevent that from overwriting the implementation, a temporary folder could be used. +Copy the generated files from the `temp` folder that was specified with `-OutPath` parameter in the command from step 3 to the project directory you created in step 1. -Moreover, it is best to minimize the updates to the schema MOF file since the main implementation should be merged with the most recent auto-generated source files. +> [!NOTE] +> With each update to the schema MOF file, `codegen.cmd` script to regenerate the source files must be executed again, which overwrites the source files if they exist. To prevent this, this example uses a temporary folder. It is best to minimize the updates to the schema MOF file since the main implementation should be merged with the most recent auto-generated source files. -### Example MSFT_FileDirectoryConfiguration Resource +### Auto-generated MSFT_FileDirectoryConfiguration Resource -After running the provider generator tool, it creates several source and header files including: +After you run the provider generator tool, several source and header files are created, including: - MSFT_FileDirectoryConfiguration.c - MSFT_FileDirectoryConfiguration.h @@ -215,13 +216,13 @@ From these three functions, only MSFT_FileDirectoryConfiguration_Invoke_GetTarge - MSFT_FileDirectoryConfiguration_ModifyInstance - MSFT_FileDirectoryConfiguration_DeleteInstance -### Details on MSFT_FileDirectoryConfiguration_Invoke_GetTargetResource +### About MSFT_FileDirectoryConfiguration_Invoke_GetTargetResource -MSFT_FileDirectoryConfiguration_Invoke_GetTargetResource performs these steps to complete its task: +MSFT_FileDirectoryConfiguration_Invoke_GetTargetResource function performs these steps to complete its task: 1. Validate the input resource. 1. Ensure the keys and required parameters are present. -1. Create a resource instance that will be used as the output of the Get method. This instance is of type MSFT_FileDirectoryConfiguration which is derived from MI_Instance. +1. Create a resource instance that is used as the output of the Get method. This instance is of type **MSFT_FileDirectoryConfiguration**, which is derived from **MI_Instance**. 1. Create the output resource instance from the modified resource instance and return it to the MI client by calling these functions: - MSFT_FileDirectoryConfiguration_GetTargetResource_Construct @@ -230,7 +231,7 @@ MSFT_FileDirectoryConfiguration_Invoke_GetTargetResource performs these steps to - MSFT_FileDirectoryConfiguration_GetTargetResource_Post - MSFT_FileDirectoryConfiguration_GetTargetResource_Destruct -1. Make sure to clean up, e.g. free allocated memory. +1. Clean up resources, for example, free allocated memory. ## MI implementation references diff --git a/windows/client-management/declared-configuration.md b/windows/client-management/declared-configuration.md index 668b5e533e..ebcbfb85e5 100644 --- a/windows/client-management/declared-configuration.md +++ b/windows/client-management/declared-configuration.md @@ -9,17 +9,17 @@ ms.topic: overview The Declared Configuration protocol is based on a desired state device configuration model though it still utilizes the underlying OMA-DM and Syncml protocol. Through a dedicated OMA-DM server, it provides all the settings in a single batch through this new protocol. The device's Declared Configuration client stack can reason over the settings to achieve the desired scenario in the most efficient and reliable manner. -The Declared Configuration protocol requires that a device has a separate [OMA-DM enrollment](mdm-overview.md), which is dependent on the device being enrolled with the primary OMA-DM server. The desired state model is a completely different model from the current model where the Server is responsible for the device's desire state. This dual enrollment is only allowed if the device is already enrolled into a primary MDM Server. The new enrollment separates the desired state management functionality from the primary functionality. The Declared Configuration enrollment's first desired state management model feature is called [Extensibility](declared-configuration-extensibility.md). +The Declared Configuration protocol requires that a device has a separate [OMA-DM enrollment](mdm-overview.md), which is dependent on the device being enrolled with the primary OMA-DM server. The desired state model is a different model from the current model where the Server is responsible for the device's desire state. This dual enrollment is only allowed if the device is already enrolled into a primary MDM Server. The new enrollment separates the desired state management functionality from the primary functionality. The Declared Configuration enrollment's first desired state management model feature is called [Extensibility](declared-configuration-extensibility.md). :::image type="content" source="images/declared-configuration-model.png" alt-text="Diagram illustrating the Declared configuration model."::: With the new [Declared Configuration CSP](mdm/declaredconfiguration-csp.md), the OMA-DM server can provide the device with the complete collection of setting names and associated values based on a specified scenario. The Declared Configuration stack on the device is responsible for handling the configuration request, and maintaining its state including updates to the scenario. -The benefit of the Declared Configuration desired state model is that it is very efficient and accurate, especially given it is the responsibility of the Declared Configuration client to configure the device. The efficiency of Declared Configuration is in the fact that the batch of scenario settings are processed by the client asynchronously, freeing up the server resources to do other work. Thus, the Declared Configuration protocol has low latency. As for configuration quality and accuracy, the Declared Configuration client stack has intimate knowledge of the configuration surface area of the device including the proper handling of continuous device updates affecting the configuration scenario. +The benefit of the Declared Configuration desired state model is that it's efficient and accurate, especially since it's the responsibility of the Declared Configuration client to configure the device. The efficiency of Declared Configuration is in the fact that the batches of scenario settings are processed by the client asynchronously, freeing up the server resources to do other work. Thus, the Declared Configuration protocol has low latency. As for configuration quality and accuracy, the Declared Configuration client stack has intimate knowledge of the configuration surface area of the device including the proper handling of continuous device updates affecting the configuration scenario. ## Declared Configuration enrollment -[Mobile Device Enrollment Protocol Version 2](/openspecs/windows_protocols/ms-mde2/4d7eadd5-3951-4f1c-8159-c39e07cbe692) describes enrollment including discovery which covers the primary and Declared Configuration enrollments. The Declared Configuration dual enrollment is managed by new DMClient CSP nodes which are shown below: +[Mobile Device Enrollment Protocol Version 2](/openspecs/windows_protocols/ms-mde2/4d7eadd5-3951-4f1c-8159-c39e07cbe692) describes enrollment including discovery, which covers the primary and Declared Configuration enrollments. The Declared Configuration dual enrollment is performed by new DMClient CSP nodes, which are listed here: - [LinkedEnrollment/Priority](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentpriority) - [LinkedEnrollment/Enroll](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentenroll) From 4f5bdf512dfbe748cf51ce8d3b41e7070a60169b Mon Sep 17 00:00:00 2001 From: Vinay Pamnani <37223378+vinaypamnani-msft@users.noreply.github.com> Date: Tue, 12 Sep 2023 18:58:34 -0400 Subject: [PATCH 05/12] DC CSP draft --- .../mdm/declaredconfiguration-csp.md | 2834 ++++++++++++++++- .../mdm/declaredconfiguration-ddf-file.md | 1657 ++++++++++ windows/client-management/mdm/toc.yml | 5 + 3 files changed, 4494 insertions(+), 2 deletions(-) create mode 100644 windows/client-management/mdm/declaredconfiguration-ddf-file.md diff --git a/windows/client-management/mdm/declaredconfiguration-csp.md b/windows/client-management/mdm/declaredconfiguration-csp.md index b7802e8ef8..0ed8150367 100644 --- a/windows/client-management/mdm/declaredconfiguration-csp.md +++ b/windows/client-management/mdm/declaredconfiguration-csp.md @@ -4,13 +4,2843 @@ description: Learn more about the DeclaredConfiguration CSP. author: vinaypamnani-msft manager: aaroncz ms.author: vinpa -ms.date: 09/11/2023 +ms.date: 09/12/2023 ms.localizationpriority: medium ms.prod: windows-client ms.technology: itpro-manage ms.topic: reference --- + + + # DeclaredConfiguration CSP -[TODO] +[!INCLUDE [Windows Insider tip](includes/mdm-insider-csp-note.md)] + + + +The Primary MDM Management device management model is one where the MDM server is solely responsible for orchestration and continuous maintenance of the state of the device for configuration scenarios. This results in intensive network traffic and high network latency due to the synchronous configuration model based on the OMA-DM Syncml standard. It's also error-prone given that the server needs intimate knowledge of client handling of configuration. + +The new Declared Configuration device management model requires the server to deliver all the setting values to the device for the scenario configuration, in batch, asynchronously through the client Declared Configuration CSP. + +- During the client initiated OMA-DM session, the Declared Configuration server sends a configuration or an inventory Declared Configuration document to the client through the [Declared Configuration CSP URI](#declared-configuration-oma-uri). If the device verifies the syntax of the document is correct, the client stack pushes the request to its orchestrator to be processed asynchronously. The client stack then exits, returning control back to Declared Configuration service allowing the device to asynchronously process the request. +- On the client, if there are any requests in process or completed, a [generic alert](#declared-configuration-document-generic-alert) is sent to the server summing up each document status, state, progress. This summation is sent on every client HTTP request to the Declared Configuration OMA-DM server. +- The Declared Configuration server uses the Alert to determine which requests are completed successfully or with errors. The server can then synchronously retrieve the Declared Configuration document process results through the [Declared Configuration CSP URI](#declared-configuration-oma-uri). + + + +The following list shows the DeclaredConfiguration configuration service provider nodes: + +- ./Device/Vendor/MSFT/DeclaredConfiguration + - [Host](#devicehost) + - [Complete](#devicehostcomplete) + - [Documents](#devicehostcompletedocuments) + - [{DocID}](#devicehostcompletedocumentsdocid) + - [Document](#devicehostcompletedocumentsdociddocument) + - [Properties](#devicehostcompletedocumentsdocidproperties) + - [Abandoned](#devicehostcompletedocumentsdocidpropertiesabandoned) + - [Results](#devicehostcompleteresults) + - [{DocID}](#devicehostcompleteresultsdocid) + - [Document](#devicehostcompleteresultsdociddocument) + - [Inventory](#devicehostinventory) + - [Documents](#devicehostinventorydocuments) + - [{DocID}](#devicehostinventorydocumentsdocid) + - [Document](#devicehostinventorydocumentsdociddocument) + - [Results](#devicehostinventoryresults) + - [{DocID}](#devicehostinventoryresultsdocid) + - [Document](#devicehostinventoryresultsdociddocument) + - [Template](#devicehosttemplate) + - [Documents](#devicehosttemplatedocuments) + - [{DocID}](#devicehosttemplatedocumentsdocid) + - [Document](#devicehosttemplatedocumentsdociddocument) + - [Properties](#devicehosttemplatedocumentsdocidproperties) + - [Abandoned](#devicehosttemplatedocumentsdocidpropertiesabandoned) + - [Variables](#devicehosttemplatedocumentsdocidvariables) + - [{VariableName}](#devicehosttemplatedocumentsdocidvariablesvariablename) + - [Value](#devicehosttemplatedocumentsdocidvariablesvariablenamevalue) + - [Results](#devicehosttemplateresults) + - [{DocID}](#devicehosttemplateresultsdocid) + - [Document](#devicehosttemplateresultsdociddocument) + - [ManagementServiceConfiguration](#devicemanagementserviceconfiguration) + - [CertificateExpirationThreshold](#devicemanagementserviceconfigurationcertificateexpirationthreshold) + - [RefreshInterval](#devicemanagementserviceconfigurationrefreshinterval) + - [StartSyncSessionOnFailure](#devicemanagementserviceconfigurationstartsyncsessiononfailure) +- ./User/Vendor/MSFT/DeclaredConfiguration + - [Host](#userhost) + - [Complete](#userhostcomplete) + - [Documents](#userhostcompletedocuments) + - [{DocID}](#userhostcompletedocumentsdocid) + - [Document](#userhostcompletedocumentsdociddocument) + - [Properties](#userhostcompletedocumentsdocidproperties) + - [Abandoned](#userhostcompletedocumentsdocidpropertiesabandoned) + - [Results](#userhostcompleteresults) + - [{DocID}](#userhostcompleteresultsdocid) + - [Document](#userhostcompleteresultsdociddocument) + - [Inventory](#userhostinventory) + - [Documents](#userhostinventorydocuments) + - [{DocID}](#userhostinventorydocumentsdocid) + - [Document](#userhostinventorydocumentsdociddocument) + - [Results](#userhostinventoryresults) + - [{DocID}](#userhostinventoryresultsdocid) + - [Document](#userhostinventoryresultsdociddocument) + - [Template](#userhosttemplate) + - [Documents](#userhosttemplatedocuments) + - [{DocID}](#userhosttemplatedocumentsdocid) + - [Document](#userhosttemplatedocumentsdociddocument) + - [Properties](#userhosttemplatedocumentsdocidproperties) + - [Abandoned](#userhosttemplatedocumentsdocidpropertiesabandoned) + - [Variables](#userhosttemplatedocumentsdocidvariables) + - [{VariableName}](#userhosttemplatedocumentsdocidvariablesvariablename) + - [Value](#userhosttemplatedocumentsdocidvariablesvariablenamevalue) + - [Results](#userhosttemplateresults) + - [{DocID}](#userhosttemplateresultsdocid) + - [Document](#userhosttemplateresultsdociddocument) + + + +## Device/Host + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | + + + + + + + + + +### Device/Host/Complete + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | + + + + + + + + + +#### Device/Host/Complete/Documents + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | + + + + + + + + + +##### Device/Host/Complete/Documents/{DocID} + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/{DocID} +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | +| Dynamic Node Naming | ServerGeneratedUniqueIdentifier | +| Allowed Values | Regular Expression: `[0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12}` | + + + + + + + + + +###### Device/Host/Complete/Documents/{DocID}/Document + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/{DocID}/Document +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `chr` (string) | +| Access Type | Add, Delete, Get, Replace | + + + + + + + + + +###### Device/Host/Complete/Documents/{DocID}/Properties + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/{DocID}/Properties +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | + + + + + + + + + +###### Device/Host/Complete/Documents/{DocID}/Properties/Abandoned + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/{DocID}/Properties/Abandoned +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `int` | +| Access Type | Add, Delete, Get, Replace | +| Default Value | 0 | + + + +**Allowed values**: + +| Value | Description | +|:--|:--| +| 0 (Default) | Insert Description Here. | +| 1 | Insert Description Here. | + + + + + + + + + +#### Device/Host/Complete/Results + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Results +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Get | + + + + + + + + + +##### Device/Host/Complete/Results/{DocID} + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Results/{DocID} +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Get | +| Dynamic Node Naming | ClientInventory | + + + + + + + + + +###### Device/Host/Complete/Results/{DocID}/Document + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Results/{DocID}/Document +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `chr` (string) | +| Access Type | Get | + + + + + + + + + +### Device/Host/Inventory + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Inventory +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | + + + + + + + + + +#### Device/Host/Inventory/Documents + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Documents +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | + + + + + + + + + +##### Device/Host/Inventory/Documents/{DocID} + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Documents/{DocID} +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | +| Dynamic Node Naming | ServerGeneratedUniqueIdentifier | +| Allowed Values | Regular Expression: `[0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12}` | + + + + + + + + + +###### Device/Host/Inventory/Documents/{DocID}/Document + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Documents/{DocID}/Document +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `chr` (string) | +| Access Type | Add, Delete, Get, Replace | + + + + + + + + + +#### Device/Host/Inventory/Results + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Results +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Get | + + + + + + + + + +##### Device/Host/Inventory/Results/{DocID} + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Results/{DocID} +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Get | +| Dynamic Node Naming | ClientInventory | + + + + + + + + + +###### Device/Host/Inventory/Results/{DocID}/Document + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Results/{DocID}/Document +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `chr` (string) | +| Access Type | Get | + + + + + + + + + +### Device/Host/Template + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | + + + + + + + + + +#### Device/Host/Template/Documents + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | + + + + + + + + + +##### Device/Host/Template/Documents/{DocID} + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID} +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | +| Dynamic Node Naming | ServerGeneratedUniqueIdentifier | +| Allowed Values | Regular Expression: `[0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12}` | + + + + + + + + + +###### Device/Host/Template/Documents/{DocID}/Document + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Document +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `chr` (string) | +| Access Type | Add, Delete, Get, Replace | + + + + + + + + + +###### Device/Host/Template/Documents/{DocID}/Properties + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Properties +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | + + + + + + + + + +###### Device/Host/Template/Documents/{DocID}/Properties/Abandoned + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Properties/Abandoned +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `int` | +| Access Type | Add, Delete, Get, Replace | +| Default Value | 0 | + + + +**Allowed values**: + +| Value | Description | +|:--|:--| +| 0 (Default) | Insert Description Here. | +| 1 | Insert Description Here. | + + + + + + + + + +###### Device/Host/Template/Documents/{DocID}/Variables + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Variables +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | + + + + + + + + + +###### Device/Host/Template/Documents/{DocID}/Variables/{VariableName} + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Variables/{VariableName} +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | +| Dynamic Node Naming | UniqueName: This node name references a variable in the templated document. | + + + + + + + + + +###### Device/Host/Template/Documents/{DocID}/Variables/{VariableName}/Value + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Variables/{VariableName}/Value +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `chr` (string) | +| Access Type | Add, Delete, Get, Replace | + + + + + + + + + +#### Device/Host/Template/Results + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Results +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Get | + + + + + + + + + +##### Device/Host/Template/Results/{DocID} + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Results/{DocID} +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Get | +| Dynamic Node Naming | ClientInventory | + + + + + + + + + +###### Device/Host/Template/Results/{DocID}/Document + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Results/{DocID}/Document +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `chr` (string) | +| Access Type | Get | + + + + + + + + + +## Device/ManagementServiceConfiguration + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/ManagementServiceConfiguration +``` + + + + +Configuration settings for WinDC behavior. + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Get | + + + + + + + + + +### Device/ManagementServiceConfiguration/CertificateExpirationThreshold + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/ManagementServiceConfiguration/CertificateExpirationThreshold +``` + + + + +This node determines the number of minutes as near expiration check for certificate. + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `int` | +| Access Type | Add, Delete, Get, Replace | +| Allowed Values | Range: `[0-4294967295]` | +| Default Value | 2880 | + + + + + + + + + +### Device/ManagementServiceConfiguration/RefreshInterval + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/ManagementServiceConfiguration/RefreshInterval +``` + + + + +This node determines the number of minutes between refreshes. + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `int` | +| Access Type | Add, Delete, Get, Replace | +| Allowed Values | Range: `[30-4294967295]` | +| Default Value | 240 | + + + + + + + + + +### Device/ManagementServiceConfiguration/StartSyncSessionOnFailure + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DeclaredConfiguration/ManagementServiceConfiguration/StartSyncSessionOnFailure +``` + + + + +This node determines whether or not to start a sync session when failed to refresh. + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `bool` | +| Access Type | Add, Delete, Get, Replace | +| Default Value | false | + + + +**Allowed values**: + +| Value | Description | +|:--|:--| +| true | Start a sync session when failed to refresh. | +| false (Default) | Don't start a sync session when failed to refresh. | + + + + + + + + + +## User/Host + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | + + + + + + + + + +### User/Host/Complete + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | + + + + + + + + + +#### User/Host/Complete/Documents + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | + + + + + + + + + +##### User/Host/Complete/Documents/{DocID} + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/{DocID} +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | +| Dynamic Node Naming | ServerGeneratedUniqueIdentifier | +| Allowed Values | Regular Expression: `[0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12}` | + + + + + + + + + +###### User/Host/Complete/Documents/{DocID}/Document + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/{DocID}/Document +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `chr` (string) | +| Access Type | Add, Delete, Get, Replace | + + + + + + + + + +###### User/Host/Complete/Documents/{DocID}/Properties + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/{DocID}/Properties +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | + + + + + + + + + +###### User/Host/Complete/Documents/{DocID}/Properties/Abandoned + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/{DocID}/Properties/Abandoned +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `int` | +| Access Type | Add, Delete, Get, Replace | +| Default Value | 0 | + + + +**Allowed values**: + +| Value | Description | +|:--|:--| +| 0 (Default) | Insert Description Here. | +| 1 | Insert Description Here. | + + + + + + + + + +#### User/Host/Complete/Results + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Results +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Get | + + + + + + + + + +##### User/Host/Complete/Results/{DocID} + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Results/{DocID} +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Get | +| Dynamic Node Naming | ClientInventory | + + + + + + + + + +###### User/Host/Complete/Results/{DocID}/Document + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Results/{DocID}/Document +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `chr` (string) | +| Access Type | Get | + + + + + + + + + +### User/Host/Inventory + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Inventory +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | + + + + + + + + + +#### User/Host/Inventory/Documents + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Documents +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | + + + + + + + + + +##### User/Host/Inventory/Documents/{DocID} + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Documents/{DocID} +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | +| Dynamic Node Naming | ServerGeneratedUniqueIdentifier | +| Allowed Values | Regular Expression: `[0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12}` | + + + + + + + + + +###### User/Host/Inventory/Documents/{DocID}/Document + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Documents/{DocID}/Document +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `chr` (string) | +| Access Type | Add, Delete, Get, Replace | + + + + + + + + + +#### User/Host/Inventory/Results + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Results +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Get | + + + + + + + + + +##### User/Host/Inventory/Results/{DocID} + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Results/{DocID} +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Get | +| Dynamic Node Naming | ClientInventory | + + + + + + + + + +###### User/Host/Inventory/Results/{DocID}/Document + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Results/{DocID}/Document +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `chr` (string) | +| Access Type | Get | + + + + + + + + + +### User/Host/Template + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Template +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | + + + + + + + + + +#### User/Host/Template/Documents + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | + + + + + + + + + +##### User/Host/Template/Documents/{DocID} + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID} +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | +| Dynamic Node Naming | ServerGeneratedUniqueIdentifier | +| Allowed Values | Regular Expression: `[0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12}` | + + + + + + + + + +###### User/Host/Template/Documents/{DocID}/Document + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Document +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `chr` (string) | +| Access Type | Add, Delete, Get, Replace | + + + + + + + + + +###### User/Host/Template/Documents/{DocID}/Properties + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Properties +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | + + + + + + + + + +###### User/Host/Template/Documents/{DocID}/Properties/Abandoned + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Properties/Abandoned +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `int` | +| Access Type | Add, Delete, Get, Replace | +| Default Value | 0 | + + + +**Allowed values**: + +| Value | Description | +|:--|:--| +| 0 (Default) | Insert Description Here. | +| 1 | Insert Description Here. | + + + + + + + + + +###### User/Host/Template/Documents/{DocID}/Variables + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Variables +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | + + + + + + + + + +###### User/Host/Template/Documents/{DocID}/Variables/{VariableName} + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Variables/{VariableName} +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Add, Delete, Get | +| Dynamic Node Naming | UniqueName: This node name references a variable in the templated document. | + + + + + + + + + +###### User/Host/Template/Documents/{DocID}/Variables/{VariableName}/Value + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Variables/{VariableName}/Value +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `chr` (string) | +| Access Type | Add, Delete, Get, Replace | + + + + + + + + + +#### User/Host/Template/Results + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Results +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Get | + + + + + + + + + +##### User/Host/Template/Results/{DocID} + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Results/{DocID} +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `node` | +| Access Type | Get | +| Dynamic Node Naming | ClientInventory | + + + + + + + + + +###### User/Host/Template/Results/{DocID}/Document + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```User +./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Results/{DocID}/Document +``` + + + + + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `chr` (string) | +| Access Type | Get | + + + + + + + + + + +## Declared Configuration OMA URI + +A Declared Configuration request is sent using an OMA-URI similar to `./Device/Vendor/MSFT/DeclaredConfiguration/Host/[Complete|Inventory]/Documents/{document id guid}/Document`. + +- The URI is prefixed with a targeted scope. The target of the scenario settings can only be device wide for Extensibility. The scope should be "Device". +- `{document id guid}` is a unique identifier for the desired state of the configuration scenario. Every document must have a unique doc id, which must be a GUID. +- The request can be a Configuration request, Inventory request or Complete. + +Example URI for a Complete request: `./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/27FEA311-68B9-4320-9FC4-296F6FDFAFE2/Document` + +The Server to Client flow of the configuration URI request, Complete, is the same as an Inventory request. + +## DeclaredConfiguration Document XML + +The value of the leaf node Document is an XML document describing the request. The actual processing of the request pivots around the `osdefinedscenario` tag: + +- **MSFTExtensibilityMIProviderConfig**: Used to configure MI Provider settings. +- **MSFTExtensibilityMIProviderInventory**: Used to retrieve MI Provider setting values. + +The DeclaredConfiguration CSP will synchronously validate the batch of settings described by the `` element, which represents the Declared Configuration document. It checks for correct syntax based on the Declared Configuration XML schema. If there's a syntax error, the CSP returns an error immediately back to the server as part of the current OMA-DM session. If the syntax check passes, then the request is passed on to a Windows service to attempt the desired state configuration of the specified scenario, asynchronously, freeing up the server to do other work thus the low latency of the new Declared Configuration protocol. The Windows client service, the orchestrator, is responsible for driving the configuration of the device based on the server supplied desire state, and to maintain it throughout its lifetime, until it's removed or modified by the server. + +Here's an example that uses the built-in native MI provider **MSFT_FileDirectoryConfiguration** with the OS defined scenario **MSFTExtensibilityMIProviderConfig**. + +```xml + + + c:\data\test\bin\ut_extensibility.tmp + TestFileContentBlah + + +``` + +The standard OMA-DM SyncML syntax is used to specify the DeclaredConfiguration CSP operations such as Replace, Set, and Delete. The SyncML's `` element's value is the specified desired state document, which is also expressed in XML and uses CDATA to ensure that the Declared Configuration client can properly interpret the SyncML. + +```xml + + + + + 14 + + + ./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/99988660-9080-3433-96e8-f32e85011999/Document + + + + + c:\data\test\bin\ut_extensibility.tmp + TestFileContentBlah + + ]]> + + + + + + +``` + +### DeclaredConfiguration XML document tags + +Both MSFTExtensibilityMIProviderConfig and MSFTExtensibilityMIProviderInventory OS defined scenarios require the same tags and attributes. + +- `` XML tag specifies the details of the Declared Configuration document to process. The document could be part of a configuration request or an inventory request. The Declared Configuration CSP has two URIs to allow the specification of a configuration or an inventory request. + + This tag has the following attributes: + + | Attribute | Description | + |--|--| + | schema | The schema version of the xml. Currently `1.0`. | + | context | States that this document is targeting the device. The value should be `Device`. | + | id | The unique identifier of the document set by the server. This should be a GUID. | + | checksum | This is the server supplied version of the document. | + | osdefinedscenario | The named scenario that is to be configured with the given configuration data. In case of Extensibility, the scenario is either MSFTExtensibilityMIProviderConfig or MSFTExtensibilityMIProviderInventory. | + +- `` XML tag describes the targeted WMI provider expressed by a namespace and classname along with the values either to be applied to the device or queried by the MI provider. + + This tag has the following attributes: + + | Attribute | Description | + |--|--| + | namespace | Specifies the targeted MI Provider namespace. | + | classname | The targeted MI provider. | + +- `` XML tag describes the required parameter name and value (only need value for configuration). The name is an attribute and the value is `` content. + + This tag has the following attributes: + + | Attribute | Description | + |--|--| + | name | Specifies the name of a MI Provider parameter. | + +- `` XML tag describes the non-required parameter name and value (only need value for configuration). The name is an attribute and the value is `` content. + + This tag has the following attributes: + + | Attribute | Description | + |--|--| + | name | Specifies the name of a MI Provider parameter. | + +## Declared Configuration Document generic alert + +On every client response to the server's request, the client constructs a Declared Configuration alert summing up the state of each of the documents that the Windows service has processed. Here's an example alert: + +```xml + + 1 + 1224 + + + com.microsoft.mdm.declaredconfigurationdocuments + + + + + + + + +``` + +In this example, there's one Declared Configuration document listed in the Alert summary. The Alert summary lists every document that is being processed by the client stack be it a configuration or inventory request. It describes the context of the document that specifies the scope of how the document is applied. The value should be "Device". The "state" attribute has a value of 60, which indicates that the document was processed successfully. Other state values are: + +```csharp +enum class DCCSPURIState :unsigned long +{ + NotDefined = 0, // transient + ConfigRequest = 1, // transient + ConfigInprogress = 2, // transient + ConfigInProgressAsyncPending = 3, // transient: Async operation is performed but pending results + DeleteRequest = 10, // transient + DeleteInprogress = 11, // transient + + GetRequest = 20, // transient + GetInprogress = 21, // transient + + ConstructURIStorageSuccess = 40, // transient + + ConfigCompletedSuccess = 60, // permanent + ConfigCompletedError = 61, // permanent + ConfigInfraError = 62, // permanent + ConfigCompletedSuccessNoRefresh = 63, // permanent + + DeleteCompletedSuccess = 70, // permanent + DeleteCompletedError = 71, // permanent + DeleteInfraError = 72, // permanent + + GetCompletedSuccess = 80, // permanent + GetCompletedError = 81, // permanent + GetInfraError = 82 // permanent +}; +``` + +## SyncML examples + +- Retrieve the results of Configuration or Inventory Request: + + ```xml + + + + 2 + + + chr + text/plain + + + ./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Results/27FEA311-68B9-4320-9FC4-296F6FDFAFE2/Document + + + + + + + ``` + + ```xml + + 2 + 1 + 2 + Get + 200 + + + 3 + 1 + 2 + + + ./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Results/27FEA311-68B9-4320-9FC4-296F6FDFAFE2/Document + + + + + + + + + + + + ``` + +- Replace a Configuration or Inventory Request + + ```xml + + + + 14 + + + ./Device/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Documents/27FEA311-68B9-4320-9FC4-296F6FDFAFE2/Document + + + + + c:/temp/foobar.tmp + + + ]]> + + + + + + + ``` + + ```xml + + 2 + 1 + 2 + Get + 200 + + 3 + 1 + 2 + + + ./Device/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Results/99998660-9080-3433-96e8-f32e85019999/Document + + + + + c:/temp/foobar.tmp + TestFileContent + + + + + + ``` + +- Abandon a Configuration or Inventory Request: This results in the document being tracked but not be reapplied. The Alert has the "Abandoned" property set to 1 to indicate that the document is no longer managed by the Declared Configuration server. + + ```xml + + + + 2 + + + int + text/plain + + + ./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/27FEA311-68B9-4320-9FC4-296F6FDFAFE2/Properties/Abandoned + + 1 + + + + + + ``` + +- Deletion of Configuration or Inventory Request: The SyncML deletion of the document will only remove the document but the Extensibility settings remain tattooed. + + ```xml + + + + + 2 + + + ./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/27FEA311-68B9-4320-9FC4-296F6FDFAFE2/Document + + + + + + + ``` + + + + +## Related articles + +[Configuration service provider reference](configuration-service-provider-reference.md) diff --git a/windows/client-management/mdm/declaredconfiguration-ddf-file.md b/windows/client-management/mdm/declaredconfiguration-ddf-file.md new file mode 100644 index 0000000000..0daf161619 --- /dev/null +++ b/windows/client-management/mdm/declaredconfiguration-ddf-file.md @@ -0,0 +1,1657 @@ +--- +title: DeclaredConfiguration DDF file +description: View the XML file containing the device description framework (DDF) for the DeclaredConfiguration configuration service provider. +author: vinaypamnani-msft +manager: aaroncz +ms.author: vinpa +ms.date: 09/12/2023 +ms.localizationpriority: medium +ms.prod: windows-client +ms.technology: itpro-manage +ms.topic: reference +--- + + + +# DeclaredConfiguration DDF file + +The following XML file contains the device description framework (DDF) for the DeclaredConfiguration configuration service provider. + +```xml + +]> + + 1.2 + + + + DeclaredConfiguration + ./User/Vendor/MSFT + + + + + Insert Description Here + + + + + + + + + + + + + + 99.9.99999 + 9.9 + 0x4;0x1B;0x30;0x31;0x48;0x54;0x62;0x63;0x64;0x65;0x79;0x7A;0x7D;0x7E;0x81;0x82;0x8A;0x8B;0xA1;0xA2;0xA4;0xA5;0xAB;0xAC;0xAF;0xBC;0xBF;0xCA;0xCB;0xCD; + + + + Host + + + + + + + Insert Description Here + + + + + + + + + + + + + + + Complete + + + + + + + Insert Description Here + + + + + + + + + + + + + + + Documents + + + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + + + + + Insert Description Here + + + + + + + + + + DocID + + + + + + + + [0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12} + + + + Document + + + + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + Properties + + + + + + + Insert Description Here + + + + + + + + + + + + + + + Abandoned + + + + + + + + 0 + Insert Description Here + + + + + + + + + + + + + + + 0 + Insert Description Here + + + 1 + Insert Description Here + + + + + + + + + Results + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + + + Insert Description Here + + + + + + + + + + DocID + + + + + + + + + Document + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + Template + + + + + + + Insert Description Here + + + + + + + + + + + + + + + Documents + + + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + + + + + Insert Description Here + + + + + + + + + + DocID + + + + + + + + [0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12} + + + + Document + + + + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + Properties + + + + + + + Insert Description Here + + + + + + + + + + + + + + + Abandoned + + + + + + + + 0 + Insert Description Here + + + + + + + + + + + + + + + 0 + Insert Description Here + + + 1 + Insert Description Here + + + + + + + Variables + + + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + + + + + Insert Description Here + + + + + + + + + + VariableName + + + + + This node name references a variable in the templated document. + + + + Value + + + + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + + + + Results + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + + + Insert Description Here + + + + + + + + + + DocID + + + + + + + + + Document + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + Inventory + + + + + + + Insert Description Here + + + + + + + + + + + + + + + Documents + + + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + + + + + Insert Description Here + + + + + + + + + + DocID + + + + + + + + [0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12} + + + + Document + + + + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + + Results + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + + + Insert Description Here + + + + + + + + + + DocID + + + + + + + + + Document + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + + + DeclaredConfiguration + ./Device/Vendor/MSFT + + + + + Insert Description Here + + + + + + + + + + + + + + 99.9.99999 + 9.9 + 0x4;0x1B;0x30;0x31;0x48;0x54;0x62;0x63;0x64;0x65;0x79;0x7A;0x7D;0x7E;0x81;0x82;0x8A;0x8B;0xA1;0xA2;0xA4;0xA5;0xAB;0xAC;0xAF;0xBC;0xBF;0xCA;0xCB;0xCD; + + + + Host + + + + + + + Insert Description Here + + + + + + + + + + + + + + + Complete + + + + + + + Insert Description Here + + + + + + + + + + + + + + + Documents + + + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + + + + + Insert Description Here + + + + + + + + + + DocID + + + + + + + + [0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12} + + + + Document + + + + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + Properties + + + + + + + Insert Description Here + + + + + + + + + + + + + + + Abandoned + + + + + + + + 0 + Insert Description Here + + + + + + + + + + + + + + + 0 + Insert Description Here + + + 1 + Insert Description Here + + + + + + + + + Results + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + + + Insert Description Here + + + + + + + + + + DocID + + + + + + + + + Document + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + Template + + + + + + + Insert Description Here + + + + + + + + + + + + + + + Documents + + + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + + + + + Insert Description Here + + + + + + + + + + DocID + + + + + + + + [0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12} + + + + Document + + + + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + Properties + + + + + + + Insert Description Here + + + + + + + + + + + + + + + Abandoned + + + + + + + + 0 + Insert Description Here + + + + + + + + + + + + + + + 0 + Insert Description Here + + + 1 + Insert Description Here + + + + + + + Variables + + + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + + + + + Insert Description Here + + + + + + + + + + VariableName + + + + + This node name references a variable in the templated document. + + + + Value + + + + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + + + + Results + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + + + Insert Description Here + + + + + + + + + + DocID + + + + + + + + + Document + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + Inventory + + + + + + + Insert Description Here + + + + + + + + + + + + + + + Documents + + + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + + + + + Insert Description Here + + + + + + + + + + DocID + + + + + + + + [0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12} + + + + Document + + + + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + + Results + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + + + Insert Description Here + + + + + + + + + + DocID + + + + + + + + + Document + + + + + Insert Description Here + + + + + + + + + + + + + + + + + + + + ManagementServiceConfiguration + + + + + Configuration settings for WinDC behavior + + + + + + + + + + + + + + + RefreshInterval + + + + + + + + 240 + This node determines the number of minutes between refreshes. + + + + + + + + + + + + + + [30-4294967295] + + + + + StartSyncSessionOnFailure + + + + + + + + false + This node determines whether or not to start a sync session when failed to refresh. + + + + + + + + + + + + + + + true + Start a sync session when failed to refresh. + + + false + Do not start a sync session when failed to refresh. + + + LastWrite + + + + CertificateExpirationThreshold + + + + + + + + 2880 + This node determines the number of minutes as near expiration check for certificate. + + + + + + + + + + + + + + [0-4294967295] + + + + + + +``` + +## Related articles + +[DeclaredConfiguration configuration service provider reference](declaredconfiguration-csp.md) diff --git a/windows/client-management/mdm/toc.yml b/windows/client-management/mdm/toc.yml index 3737a668f3..cbf1e4f078 100644 --- a/windows/client-management/mdm/toc.yml +++ b/windows/client-management/mdm/toc.yml @@ -661,6 +661,11 @@ items: items: - name: CustomDeviceUI DDF file href: customdeviceui-ddf.md + - name: DeclaredConfiguration + href: declaredconfiguration-csp.md + items: + - name: DeclaredConfiguration DDF file + href: declaredconfiguration-ddf-file.md - name: Defender href: defender-csp.md items: From ed1e0c03dcee9534244c282049dd2da3e605d4ad Mon Sep 17 00:00:00 2001 From: Vinay Pamnani <37223378+vinaypamnani-msft@users.noreply.github.com> Date: Wed, 13 Sep 2023 12:23:45 -0400 Subject: [PATCH 06/12] Update WIP preview include note --- windows/client-management/mdm/includes/mdm-insider-csp-note.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/client-management/mdm/includes/mdm-insider-csp-note.md b/windows/client-management/mdm/includes/mdm-insider-csp-note.md index 5c8c70b1fe..1f9596a9ce 100644 --- a/windows/client-management/mdm/includes/mdm-insider-csp-note.md +++ b/windows/client-management/mdm/includes/mdm-insider-csp-note.md @@ -7,4 +7,4 @@ ms.date: 05/09/2023 --- > [!IMPORTANT] -> This CSP contains preview policies that are under development and only applicable for [Windows Insider Preview builds](/windows-insider/). These policies are subject to change and may have dependencies on other features or services in preview. +> This CSP contains preview settings that are under development and only applicable for [Windows Insider Preview builds](/windows-insider/). These settings are subject to change and may have dependencies on other features or services in preview. From 4c5607ea592f0561a632f78537878f7682a735e0 Mon Sep 17 00:00:00 2001 From: Vinay Pamnani <37223378+vinaypamnani-msft@users.noreply.github.com> Date: Wed, 13 Sep 2023 13:59:52 -0400 Subject: [PATCH 07/12] Exclude some nodes from DC CSP --- .../mdm/declaredconfiguration-csp.md | 1764 +---------------- .../mdm/declaredconfiguration-ddf-file.md | 1064 +--------- 2 files changed, 61 insertions(+), 2767 deletions(-) diff --git a/windows/client-management/mdm/declaredconfiguration-csp.md b/windows/client-management/mdm/declaredconfiguration-csp.md index 0ed8150367..cfcee7e74a 100644 --- a/windows/client-management/mdm/declaredconfiguration-csp.md +++ b/windows/client-management/mdm/declaredconfiguration-csp.md @@ -4,7 +4,7 @@ description: Learn more about the DeclaredConfiguration CSP. author: vinaypamnani-msft manager: aaroncz ms.author: vinpa -ms.date: 09/12/2023 +ms.date: 09/13/2023 ms.localizationpriority: medium ms.prod: windows-client ms.technology: itpro-manage @@ -33,78 +33,36 @@ The new Declared Configuration device management model requires the server to de The following list shows the DeclaredConfiguration configuration service provider nodes: - ./Device/Vendor/MSFT/DeclaredConfiguration - - [Host](#devicehost) - - [Complete](#devicehostcomplete) - - [Documents](#devicehostcompletedocuments) - - [{DocID}](#devicehostcompletedocumentsdocid) - - [Document](#devicehostcompletedocumentsdociddocument) - - [Properties](#devicehostcompletedocumentsdocidproperties) - - [Abandoned](#devicehostcompletedocumentsdocidpropertiesabandoned) - - [Results](#devicehostcompleteresults) - - [{DocID}](#devicehostcompleteresultsdocid) - - [Document](#devicehostcompleteresultsdociddocument) - - [Inventory](#devicehostinventory) - - [Documents](#devicehostinventorydocuments) - - [{DocID}](#devicehostinventorydocumentsdocid) - - [Document](#devicehostinventorydocumentsdociddocument) - - [Results](#devicehostinventoryresults) - - [{DocID}](#devicehostinventoryresultsdocid) - - [Document](#devicehostinventoryresultsdociddocument) - - [Template](#devicehosttemplate) - - [Documents](#devicehosttemplatedocuments) - - [{DocID}](#devicehosttemplatedocumentsdocid) - - [Document](#devicehosttemplatedocumentsdociddocument) - - [Properties](#devicehosttemplatedocumentsdocidproperties) - - [Abandoned](#devicehosttemplatedocumentsdocidpropertiesabandoned) - - [Variables](#devicehosttemplatedocumentsdocidvariables) - - [{VariableName}](#devicehosttemplatedocumentsdocidvariablesvariablename) - - [Value](#devicehosttemplatedocumentsdocidvariablesvariablenamevalue) - - [Results](#devicehosttemplateresults) - - [{DocID}](#devicehosttemplateresultsdocid) - - [Document](#devicehosttemplateresultsdociddocument) - - [ManagementServiceConfiguration](#devicemanagementserviceconfiguration) - - [CertificateExpirationThreshold](#devicemanagementserviceconfigurationcertificateexpirationthreshold) - - [RefreshInterval](#devicemanagementserviceconfigurationrefreshinterval) - - [StartSyncSessionOnFailure](#devicemanagementserviceconfigurationstartsyncsessiononfailure) -- ./User/Vendor/MSFT/DeclaredConfiguration - - [Host](#userhost) - - [Complete](#userhostcomplete) - - [Documents](#userhostcompletedocuments) - - [{DocID}](#userhostcompletedocumentsdocid) - - [Document](#userhostcompletedocumentsdociddocument) - - [Properties](#userhostcompletedocumentsdocidproperties) - - [Abandoned](#userhostcompletedocumentsdocidpropertiesabandoned) - - [Results](#userhostcompleteresults) - - [{DocID}](#userhostcompleteresultsdocid) - - [Document](#userhostcompleteresultsdociddocument) - - [Inventory](#userhostinventory) - - [Documents](#userhostinventorydocuments) - - [{DocID}](#userhostinventorydocumentsdocid) - - [Document](#userhostinventorydocumentsdociddocument) - - [Results](#userhostinventoryresults) - - [{DocID}](#userhostinventoryresultsdocid) - - [Document](#userhostinventoryresultsdociddocument) - - [Template](#userhosttemplate) - - [Documents](#userhosttemplatedocuments) - - [{DocID}](#userhosttemplatedocumentsdocid) - - [Document](#userhosttemplatedocumentsdociddocument) - - [Properties](#userhosttemplatedocumentsdocidproperties) - - [Abandoned](#userhosttemplatedocumentsdocidpropertiesabandoned) - - [Variables](#userhosttemplatedocumentsdocidvariables) - - [{VariableName}](#userhosttemplatedocumentsdocidvariablesvariablename) - - [Value](#userhosttemplatedocumentsdocidvariablesvariablenamevalue) - - [Results](#userhosttemplateresults) - - [{DocID}](#userhosttemplateresultsdocid) - - [Document](#userhosttemplateresultsdociddocument) + - [Host](#host) + - [Complete](#hostcomplete) + - [Documents](#hostcompletedocuments) + - [{DocID}](#hostcompletedocumentsdocid) + - [Document](#hostcompletedocumentsdociddocument) + - [Properties](#hostcompletedocumentsdocidproperties) + - [Abandoned](#hostcompletedocumentsdocidpropertiesabandoned) + - [Results](#hostcompleteresults) + - [{DocID}](#hostcompleteresultsdocid) + - [Document](#hostcompleteresultsdociddocument) + - [Inventory](#hostinventory) + - [Documents](#hostinventorydocuments) + - [{DocID}](#hostinventorydocumentsdocid) + - [Document](#hostinventorydocumentsdociddocument) + - [Results](#hostinventoryresults) + - [{DocID}](#hostinventoryresultsdocid) + - [Document](#hostinventoryresultsdociddocument) + - [ManagementServiceConfiguration](#managementserviceconfiguration) + - [CertificateExpirationThreshold](#managementserviceconfigurationcertificateexpirationthreshold) + - [RefreshInterval](#managementserviceconfigurationrefreshinterval) + - [StartSyncSessionOnFailure](#managementserviceconfigurationstartsyncsessiononfailure) -## Device/Host +## Host | Scope | Editions | Applicable OS | |:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | @@ -137,12 +95,12 @@ The following list shows the DeclaredConfiguration configuration service provide -### Device/Host/Complete +### Host/Complete | Scope | Editions | Applicable OS | |:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | @@ -175,12 +133,12 @@ The following list shows the DeclaredConfiguration configuration service provide -#### Device/Host/Complete/Documents +#### Host/Complete/Documents | Scope | Editions | Applicable OS | |:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | @@ -213,12 +171,12 @@ The following list shows the DeclaredConfiguration configuration service provide -##### Device/Host/Complete/Documents/{DocID} +##### Host/Complete/Documents/{DocID} | Scope | Editions | Applicable OS | |:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | @@ -253,12 +211,12 @@ The following list shows the DeclaredConfiguration configuration service provide -###### Device/Host/Complete/Documents/{DocID}/Document +###### Host/Complete/Documents/{DocID}/Document | Scope | Editions | Applicable OS | |:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | @@ -291,12 +249,12 @@ The following list shows the DeclaredConfiguration configuration service provide -###### Device/Host/Complete/Documents/{DocID}/Properties +###### Host/Complete/Documents/{DocID}/Properties | Scope | Editions | Applicable OS | |:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | @@ -329,12 +287,12 @@ The following list shows the DeclaredConfiguration configuration service provide -###### Device/Host/Complete/Documents/{DocID}/Properties/Abandoned +###### Host/Complete/Documents/{DocID}/Properties/Abandoned | Scope | Editions | Applicable OS | |:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | @@ -377,12 +335,12 @@ The following list shows the DeclaredConfiguration configuration service provide -#### Device/Host/Complete/Results +#### Host/Complete/Results | Scope | Editions | Applicable OS | |:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | @@ -415,12 +373,12 @@ The following list shows the DeclaredConfiguration configuration service provide -##### Device/Host/Complete/Results/{DocID} +##### Host/Complete/Results/{DocID} | Scope | Editions | Applicable OS | |:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | @@ -454,12 +412,12 @@ The following list shows the DeclaredConfiguration configuration service provide -###### Device/Host/Complete/Results/{DocID}/Document +###### Host/Complete/Results/{DocID}/Document | Scope | Editions | Applicable OS | |:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | @@ -492,12 +450,12 @@ The following list shows the DeclaredConfiguration configuration service provide -### Device/Host/Inventory +### Host/Inventory | Scope | Editions | Applicable OS | |:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | @@ -530,12 +488,12 @@ The following list shows the DeclaredConfiguration configuration service provide -#### Device/Host/Inventory/Documents +#### Host/Inventory/Documents | Scope | Editions | Applicable OS | |:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | @@ -568,12 +526,12 @@ The following list shows the DeclaredConfiguration configuration service provide -##### Device/Host/Inventory/Documents/{DocID} +##### Host/Inventory/Documents/{DocID} | Scope | Editions | Applicable OS | |:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | @@ -608,12 +566,12 @@ The following list shows the DeclaredConfiguration configuration service provide -###### Device/Host/Inventory/Documents/{DocID}/Document +###### Host/Inventory/Documents/{DocID}/Document | Scope | Editions | Applicable OS | |:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | @@ -646,12 +604,12 @@ The following list shows the DeclaredConfiguration configuration service provide -#### Device/Host/Inventory/Results +#### Host/Inventory/Results | Scope | Editions | Applicable OS | |:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | @@ -684,12 +642,12 @@ The following list shows the DeclaredConfiguration configuration service provide -##### Device/Host/Inventory/Results/{DocID} +##### Host/Inventory/Results/{DocID} | Scope | Editions | Applicable OS | |:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | @@ -723,12 +681,12 @@ The following list shows the DeclaredConfiguration configuration service provide -###### Device/Host/Inventory/Results/{DocID}/Document +###### Host/Inventory/Results/{DocID}/Document | Scope | Editions | Applicable OS | |:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | @@ -760,478 +718,8 @@ The following list shows the DeclaredConfiguration configuration service provide - -### Device/Host/Template - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```Device -./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Add, Delete, Get | - - - - - - - - - -#### Device/Host/Template/Documents - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```Device -./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Add, Delete, Get | - - - - - - - - - -##### Device/Host/Template/Documents/{DocID} - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```Device -./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID} -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Add, Delete, Get | -| Dynamic Node Naming | ServerGeneratedUniqueIdentifier | -| Allowed Values | Regular Expression: `[0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12}` | - - - - - - - - - -###### Device/Host/Template/Documents/{DocID}/Document - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```Device -./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Document -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `chr` (string) | -| Access Type | Add, Delete, Get, Replace | - - - - - - - - - -###### Device/Host/Template/Documents/{DocID}/Properties - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```Device -./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Properties -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Add, Delete, Get | - - - - - - - - - -###### Device/Host/Template/Documents/{DocID}/Properties/Abandoned - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```Device -./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Properties/Abandoned -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `int` | -| Access Type | Add, Delete, Get, Replace | -| Default Value | 0 | - - - -**Allowed values**: - -| Value | Description | -|:--|:--| -| 0 (Default) | Insert Description Here. | -| 1 | Insert Description Here. | - - - - - - - - - -###### Device/Host/Template/Documents/{DocID}/Variables - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```Device -./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Variables -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Add, Delete, Get | - - - - - - - - - -###### Device/Host/Template/Documents/{DocID}/Variables/{VariableName} - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```Device -./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Variables/{VariableName} -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Add, Delete, Get | -| Dynamic Node Naming | UniqueName: This node name references a variable in the templated document. | - - - - - - - - - -###### Device/Host/Template/Documents/{DocID}/Variables/{VariableName}/Value - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```Device -./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Variables/{VariableName}/Value -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `chr` (string) | -| Access Type | Add, Delete, Get, Replace | - - - - - - - - - -#### Device/Host/Template/Results - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```Device -./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Results -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Get | - - - - - - - - - -##### Device/Host/Template/Results/{DocID} - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```Device -./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Results/{DocID} -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Get | -| Dynamic Node Naming | ClientInventory | - - - - - - - - - -###### Device/Host/Template/Results/{DocID}/Document - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```Device -./Device/Vendor/MSFT/DeclaredConfiguration/Host/Template/Results/{DocID}/Document -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `chr` (string) | -| Access Type | Get | - - - - - - - - -## Device/ManagementServiceConfiguration +## ManagementServiceConfiguration | Scope | Editions | Applicable OS | @@ -1270,7 +758,7 @@ Configuration settings for WinDC behavior. -### Device/ManagementServiceConfiguration/CertificateExpirationThreshold +### ManagementServiceConfiguration/CertificateExpirationThreshold | Scope | Editions | Applicable OS | @@ -1311,7 +799,7 @@ This node determines the number of minutes as near expiration check for certific -### Device/ManagementServiceConfiguration/RefreshInterval +### ManagementServiceConfiguration/RefreshInterval | Scope | Editions | Applicable OS | @@ -1352,7 +840,7 @@ This node determines the number of minutes between refreshes. -### Device/ManagementServiceConfiguration/StartSyncSessionOnFailure +### ManagementServiceConfiguration/StartSyncSessionOnFailure | Scope | Editions | Applicable OS | @@ -1400,1138 +888,6 @@ This node determines whether or not to start a sync session when failed to refre - -## User/Host - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Add, Delete, Get | - - - - - - - - - -### User/Host/Complete - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Add, Delete, Get | - - - - - - - - - -#### User/Host/Complete/Documents - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Add, Delete, Get | - - - - - - - - - -##### User/Host/Complete/Documents/{DocID} - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/{DocID} -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Add, Delete, Get | -| Dynamic Node Naming | ServerGeneratedUniqueIdentifier | -| Allowed Values | Regular Expression: `[0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12}` | - - - - - - - - - -###### User/Host/Complete/Documents/{DocID}/Document - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/{DocID}/Document -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `chr` (string) | -| Access Type | Add, Delete, Get, Replace | - - - - - - - - - -###### User/Host/Complete/Documents/{DocID}/Properties - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/{DocID}/Properties -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Add, Delete, Get | - - - - - - - - - -###### User/Host/Complete/Documents/{DocID}/Properties/Abandoned - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/{DocID}/Properties/Abandoned -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `int` | -| Access Type | Add, Delete, Get, Replace | -| Default Value | 0 | - - - -**Allowed values**: - -| Value | Description | -|:--|:--| -| 0 (Default) | Insert Description Here. | -| 1 | Insert Description Here. | - - - - - - - - - -#### User/Host/Complete/Results - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Results -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Get | - - - - - - - - - -##### User/Host/Complete/Results/{DocID} - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Results/{DocID} -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Get | -| Dynamic Node Naming | ClientInventory | - - - - - - - - - -###### User/Host/Complete/Results/{DocID}/Document - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Results/{DocID}/Document -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `chr` (string) | -| Access Type | Get | - - - - - - - - - -### User/Host/Inventory - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Inventory -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Add, Delete, Get | - - - - - - - - - -#### User/Host/Inventory/Documents - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Documents -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Add, Delete, Get | - - - - - - - - - -##### User/Host/Inventory/Documents/{DocID} - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Documents/{DocID} -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Add, Delete, Get | -| Dynamic Node Naming | ServerGeneratedUniqueIdentifier | -| Allowed Values | Regular Expression: `[0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12}` | - - - - - - - - - -###### User/Host/Inventory/Documents/{DocID}/Document - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Documents/{DocID}/Document -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `chr` (string) | -| Access Type | Add, Delete, Get, Replace | - - - - - - - - - -#### User/Host/Inventory/Results - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Results -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Get | - - - - - - - - - -##### User/Host/Inventory/Results/{DocID} - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Results/{DocID} -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Get | -| Dynamic Node Naming | ClientInventory | - - - - - - - - - -###### User/Host/Inventory/Results/{DocID}/Document - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Results/{DocID}/Document -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `chr` (string) | -| Access Type | Get | - - - - - - - - - -### User/Host/Template - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Template -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Add, Delete, Get | - - - - - - - - - -#### User/Host/Template/Documents - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Add, Delete, Get | - - - - - - - - - -##### User/Host/Template/Documents/{DocID} - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID} -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Add, Delete, Get | -| Dynamic Node Naming | ServerGeneratedUniqueIdentifier | -| Allowed Values | Regular Expression: `[0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12}` | - - - - - - - - - -###### User/Host/Template/Documents/{DocID}/Document - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Document -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `chr` (string) | -| Access Type | Add, Delete, Get, Replace | - - - - - - - - - -###### User/Host/Template/Documents/{DocID}/Properties - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Properties -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Add, Delete, Get | - - - - - - - - - -###### User/Host/Template/Documents/{DocID}/Properties/Abandoned - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Properties/Abandoned -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `int` | -| Access Type | Add, Delete, Get, Replace | -| Default Value | 0 | - - - -**Allowed values**: - -| Value | Description | -|:--|:--| -| 0 (Default) | Insert Description Here. | -| 1 | Insert Description Here. | - - - - - - - - - -###### User/Host/Template/Documents/{DocID}/Variables - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Variables -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Add, Delete, Get | - - - - - - - - - -###### User/Host/Template/Documents/{DocID}/Variables/{VariableName} - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Variables/{VariableName} -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Add, Delete, Get | -| Dynamic Node Naming | UniqueName: This node name references a variable in the templated document. | - - - - - - - - - -###### User/Host/Template/Documents/{DocID}/Variables/{VariableName}/Value - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Documents/{DocID}/Variables/{VariableName}/Value -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `chr` (string) | -| Access Type | Add, Delete, Get, Replace | - - - - - - - - - -#### User/Host/Template/Results - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Results -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Get | - - - - - - - - - -##### User/Host/Template/Results/{DocID} - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Results/{DocID} -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Get | -| Dynamic Node Naming | ClientInventory | - - - - - - - - - -###### User/Host/Template/Results/{DocID}/Document - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
✅ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```User -./User/Vendor/MSFT/DeclaredConfiguration/Host/Template/Results/{DocID}/Document -``` - - - - - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `chr` (string) | -| Access Type | Get | - - - - - - - - ## Declared Configuration OMA URI diff --git a/windows/client-management/mdm/declaredconfiguration-ddf-file.md b/windows/client-management/mdm/declaredconfiguration-ddf-file.md index 0daf161619..3860a6196f 100644 --- a/windows/client-management/mdm/declaredconfiguration-ddf-file.md +++ b/windows/client-management/mdm/declaredconfiguration-ddf-file.md @@ -4,7 +4,7 @@ description: View the XML file containing the device description framework (DDF) author: vinaypamnani-msft manager: aaroncz ms.author: vinpa -ms.date: 09/12/2023 +ms.date: 09/13/2023 ms.localizationpriority: medium ms.prod: windows-client ms.technology: itpro-manage @@ -24,762 +24,6 @@ The following XML file contains the device description framework (DDF) for the D 1.2 - - DeclaredConfiguration - ./User/Vendor/MSFT - - - - - Insert Description Here - - - - - - - - - - - - - - 99.9.99999 - 9.9 - 0x4;0x1B;0x30;0x31;0x48;0x54;0x62;0x63;0x64;0x65;0x79;0x7A;0x7D;0x7E;0x81;0x82;0x8A;0x8B;0xA1;0xA2;0xA4;0xA5;0xAB;0xAC;0xAF;0xBC;0xBF;0xCA;0xCB;0xCD; - - - - Host - - - - - - - Insert Description Here - - - - - - - - - - - - - - - Complete - - - - - - - Insert Description Here - - - - - - - - - - - - - - - Documents - - - - - - - Insert Description Here - - - - - - - - - - - - - - - - - - - - - - - Insert Description Here - - - - - - - - - - DocID - - - - - - - - [0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12} - - - - Document - - - - - - - - Insert Description Here - - - - - - - - - - - - - - - - - - Properties - - - - - - - Insert Description Here - - - - - - - - - - - - - - - Abandoned - - - - - - - - 0 - Insert Description Here - - - - - - - - - - - - - - - 0 - Insert Description Here - - - 1 - Insert Description Here - - - - - - - - - Results - - - - - Insert Description Here - - - - - - - - - - - - - - - - - - - - - Insert Description Here - - - - - - - - - - DocID - - - - - - - - - Document - - - - - Insert Description Here - - - - - - - - - - - - - - - - - - - Template - - - - - - - Insert Description Here - - - - - - - - - - - - - - - Documents - - - - - - - Insert Description Here - - - - - - - - - - - - - - - - - - - - - - - Insert Description Here - - - - - - - - - - DocID - - - - - - - - [0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12} - - - - Document - - - - - - - - Insert Description Here - - - - - - - - - - - - - - - - - - Properties - - - - - - - Insert Description Here - - - - - - - - - - - - - - - Abandoned - - - - - - - - 0 - Insert Description Here - - - - - - - - - - - - - - - 0 - Insert Description Here - - - 1 - Insert Description Here - - - - - - - Variables - - - - - - - Insert Description Here - - - - - - - - - - - - - - - - - - - - - - - Insert Description Here - - - - - - - - - - VariableName - - - - - This node name references a variable in the templated document. - - - - Value - - - - - - - - Insert Description Here - - - - - - - - - - - - - - - - - - - - - - Results - - - - - Insert Description Here - - - - - - - - - - - - - - - - - - - - - Insert Description Here - - - - - - - - - - DocID - - - - - - - - - Document - - - - - Insert Description Here - - - - - - - - - - - - - - - - - - - Inventory - - - - - - - Insert Description Here - - - - - - - - - - - - - - - Documents - - - - - - - Insert Description Here - - - - - - - - - - - - - - - - - - - - - - - Insert Description Here - - - - - - - - - - DocID - - - - - - - - [0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12} - - - - Document - - - - - - - - Insert Description Here - - - - - - - - - - - - - - - - - - - - Results - - - - - Insert Description Here - - - - - - - - - - - - - - - - - - - - - Insert Description Here - - - - - - - - - - DocID - - - - - - - - - Document - - - - - Insert Description Here - - - - - - - - - - - - - - - - - - - DeclaredConfiguration ./Device/Vendor/MSFT @@ -1057,312 +301,6 @@ The following XML file contains the device description framework (DDF) for the D - - Template - - - - - - - Insert Description Here - - - - - - - - - - - - - - - Documents - - - - - - - Insert Description Here - - - - - - - - - - - - - - - - - - - - - - - Insert Description Here - - - - - - - - - - DocID - - - - - - - - [0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12} - - - - Document - - - - - - - - Insert Description Here - - - - - - - - - - - - - - - - - - Properties - - - - - - - Insert Description Here - - - - - - - - - - - - - - - Abandoned - - - - - - - - 0 - Insert Description Here - - - - - - - - - - - - - - - 0 - Insert Description Here - - - 1 - Insert Description Here - - - - - - - Variables - - - - - - - Insert Description Here - - - - - - - - - - - - - - - - - - - - - - - Insert Description Here - - - - - - - - - - VariableName - - - - - This node name references a variable in the templated document. - - - - Value - - - - - - - - Insert Description Here - - - - - - - - - - - - - - - - - - - - - - Results - - - - - Insert Description Here - - - - - - - - - - - - - - - - - - - - - Insert Description Here - - - - - - - - - - DocID - - - - - - - - - Document - - - - - Insert Description Here - - - - - - - - - - - - - - - - - Inventory From 70264d37e659fcb7441dcd44df32b07ed73eca4e Mon Sep 17 00:00:00 2001 From: Vinay Pamnani <37223378+vinaypamnani-msft@users.noreply.github.com> Date: Wed, 13 Sep 2023 16:50:58 -0400 Subject: [PATCH 08/12] Slight change to include file --- windows/client-management/mdm/includes/mdm-insider-csp-note.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/client-management/mdm/includes/mdm-insider-csp-note.md b/windows/client-management/mdm/includes/mdm-insider-csp-note.md index 1f9596a9ce..bc1fc814b6 100644 --- a/windows/client-management/mdm/includes/mdm-insider-csp-note.md +++ b/windows/client-management/mdm/includes/mdm-insider-csp-note.md @@ -7,4 +7,4 @@ ms.date: 05/09/2023 --- > [!IMPORTANT] -> This CSP contains preview settings that are under development and only applicable for [Windows Insider Preview builds](/windows-insider/). These settings are subject to change and may have dependencies on other features or services in preview. +> This CSP contains some settings that are under development and only applicable for [Windows Insider Preview builds](/windows-insider/). These settings are subject to change and may have dependencies on other features or services in preview. From 225aaccfd58448b947f9cc5fe6f058894687725b Mon Sep 17 00:00:00 2001 From: Vinay Pamnani <37223378+vinaypamnani-msft@users.noreply.github.com> Date: Thu, 14 Sep 2023 13:07:38 -0400 Subject: [PATCH 09/12] More changes --- .../declared-configuration-dsc.md | 10 ---------- .../declared-configuration-extensibility.md | 4 ++-- .../client-management/declared-configuration.md | 2 +- .../mdm/declaredconfiguration-csp.md | 16 ++++++++-------- windows/client-management/mdm/toc.yml | 2 +- 5 files changed, 12 insertions(+), 22 deletions(-) delete mode 100644 windows/client-management/declared-configuration-dsc.md diff --git a/windows/client-management/declared-configuration-dsc.md b/windows/client-management/declared-configuration-dsc.md deleted file mode 100644 index e6dc588bbe..0000000000 --- a/windows/client-management/declared-configuration-dsc.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Authoring DSC resources for Declared Configuration -description: Learn more about authoring DSC resources for Declared Configuration -ms.date: 09/11/2023 -ms.topic: how-to ---- - -# Authoring DSC resources for Declared Configuration - -[TODO] diff --git a/windows/client-management/declared-configuration-extensibility.md b/windows/client-management/declared-configuration-extensibility.md index 82fe7e05bd..93ca1dcfc2 100644 --- a/windows/client-management/declared-configuration-extensibility.md +++ b/windows/client-management/declared-configuration-extensibility.md @@ -62,7 +62,7 @@ To create a native WMI provider, follow the steps outlined in [How to Implement This example provides more details about each step to demonstrate how to implement a sample native resource named `MSFT_FileDirectoryConfiguration`. -### Step 1: Create the Resource Schema File in MOF Format +### Step 1: Create the resource schema MOF file Create a sample schema MOF file used to generate the initial source code for the `MSFT_FileDirectoryConfiguration` native resource and place it in the project directory named `MSFT_FileDirectoryConfiguration`. @@ -188,7 +188,7 @@ Copy the generated files from the `temp` folder that was specified with `-OutPat > [!NOTE] > With each update to the schema MOF file, `codegen.cmd` script to regenerate the source files must be executed again, which overwrites the source files if they exist. To prevent this, this example uses a temporary folder. It is best to minimize the updates to the schema MOF file since the main implementation should be merged with the most recent auto-generated source files. -### Auto-generated MSFT_FileDirectoryConfiguration Resource +### About MSFT_FileDirectoryConfiguration resource After you run the provider generator tool, several source and header files are created, including: diff --git a/windows/client-management/declared-configuration.md b/windows/client-management/declared-configuration.md index ebcbfb85e5..d985905be3 100644 --- a/windows/client-management/declared-configuration.md +++ b/windows/client-management/declared-configuration.md @@ -28,7 +28,7 @@ The benefit of the Declared Configuration desired state model is that it's effic - [LinkedEnrollment/LastError](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentlasterror) - [LinkedEnrollment/DiscoveryEndpoint](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentdiscoveryendpoint) -Here's a SyncML example for setting LinkedEnrolment/DiscoveryEndpoint and triggering LinkedEnrollment/Enroll: +Here's a SyncML example for setting **LinkedEnrolment/DiscoveryEndpoint** and triggering **LinkedEnrollment/Enroll**: ```xml diff --git a/windows/client-management/mdm/declaredconfiguration-csp.md b/windows/client-management/mdm/declaredconfiguration-csp.md index cfcee7e74a..7f95053f24 100644 --- a/windows/client-management/mdm/declaredconfiguration-csp.md +++ b/windows/client-management/mdm/declaredconfiguration-csp.md @@ -25,7 +25,7 @@ The Primary MDM Management device management model is one where the MDM server i The new Declared Configuration device management model requires the server to deliver all the setting values to the device for the scenario configuration, in batch, asynchronously through the client Declared Configuration CSP. - During the client initiated OMA-DM session, the Declared Configuration server sends a configuration or an inventory Declared Configuration document to the client through the [Declared Configuration CSP URI](#declared-configuration-oma-uri). If the device verifies the syntax of the document is correct, the client stack pushes the request to its orchestrator to be processed asynchronously. The client stack then exits, returning control back to Declared Configuration service allowing the device to asynchronously process the request. -- On the client, if there are any requests in process or completed, a [generic alert](#declared-configuration-document-generic-alert) is sent to the server summing up each document status, state, progress. This summation is sent on every client HTTP request to the Declared Configuration OMA-DM server. +- On the client, if there are any requests in process or completed, a [generic alert](#declared-configuration-generic-alert) is sent to the server summing up each document status, state, progress. This summation is sent on every client HTTP request to the Declared Configuration OMA-DM server. - The Declared Configuration server uses the Alert to determine which requests are completed successfully or with errors. The server can then synchronously retrieve the Declared Configuration document process results through the [Declared Configuration CSP URI](#declared-configuration-oma-uri). @@ -115,6 +115,7 @@ The following list shows the DeclaredConfiguration configuration service provide +The Server to Client flow of the Complete request, is the same as an Inventory request. @@ -470,6 +471,7 @@ The following list shows the DeclaredConfiguration configuration service provide +The Server to Client flow of the Inventory request, is the same as the Complete request. @@ -892,16 +894,14 @@ This node determines whether or not to start a sync session when failed to refre ## Declared Configuration OMA URI -A Declared Configuration request is sent using an OMA-URI similar to `./Device/Vendor/MSFT/DeclaredConfiguration/Host/[Complete|Inventory]/Documents/{document id guid}/Document`. +A Declared Configuration request is sent using an OMA-URI similar to `./Device/Vendor/MSFT/DeclaredConfiguration/Host/[Complete|Inventory]/Documents/{DocID}/Document`. - The URI is prefixed with a targeted scope. The target of the scenario settings can only be device wide for Extensibility. The scope should be "Device". -- `{document id guid}` is a unique identifier for the desired state of the configuration scenario. Every document must have a unique doc id, which must be a GUID. -- The request can be a Configuration request, Inventory request or Complete. +- `{DocID}` is a unique identifier for the desired state of the configuration scenario. Every document must have a ID, which must be a GUID. +- The request can be a Configuration request, Inventory or Complete. Example URI for a Complete request: `./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/27FEA311-68B9-4320-9FC4-296F6FDFAFE2/Document` -The Server to Client flow of the configuration URI request, Complete, is the same as an Inventory request. - ## DeclaredConfiguration Document XML The value of the leaf node Document is an XML document describing the request. The actual processing of the request pivots around the `osdefinedscenario` tag: @@ -922,7 +922,7 @@ Here's an example that uses the built-in native MI provider **MSFT_FileDirectory ``` -The standard OMA-DM SyncML syntax is used to specify the DeclaredConfiguration CSP operations such as Replace, Set, and Delete. The SyncML's `` element's value is the specified desired state document, which is also expressed in XML and uses CDATA to ensure that the Declared Configuration client can properly interpret the SyncML. +The standard OMA-DM SyncML syntax is used to specify the DeclaredConfiguration CSP operations such as Replace, Set, and Delete. The payload of the SyncML's `` element must be XML-encoded; for this XML encoding, there are a variety of online encoders that you can use. To avoid encoding the payload, you can use [CDATA Section](http://www.w3.org/TR/REC-xml/#sec-cdata-sect) as shown in this example. ```xml @@ -990,7 +990,7 @@ Both MSFTExtensibilityMIProviderConfig and MSFTExtensibilityMIProviderInventory |--|--| | name | Specifies the name of a MI Provider parameter. | -## Declared Configuration Document generic alert +## Declared Configuration generic alert On every client response to the server's request, the client constructs a Declared Configuration alert summing up the state of each of the documents that the Windows service has processed. Here's an example alert: diff --git a/windows/client-management/mdm/toc.yml b/windows/client-management/mdm/toc.yml index cbf1e4f078..2ca71c81c0 100644 --- a/windows/client-management/mdm/toc.yml +++ b/windows/client-management/mdm/toc.yml @@ -32,7 +32,7 @@ items: - name: Declared Configuration protocol href: ../declared-configuration.md items: - - name: Declared Configuration Extensibility + - name: Declared Configuration extensibility href: ../declared-configuration-extensibility.md - name: DeclaredConfiguration CSP href: declaredconfiguration-csp.md From 9c4af135ff4b6c01a0809961dc301ba2fe044059 Mon Sep 17 00:00:00 2001 From: Aaron Czechowski Date: Wed, 27 Sep 2023 14:27:46 -0700 Subject: [PATCH 10/12] style and acrolinx review --- .../declared-configuration-extensibility.md | 150 +++++++++--------- .../declared-configuration.md | 26 +-- .../mdm/declaredconfiguration-csp.md | 89 ++++++----- 3 files changed, 136 insertions(+), 129 deletions(-) diff --git a/windows/client-management/declared-configuration-extensibility.md b/windows/client-management/declared-configuration-extensibility.md index 93ca1dcfc2..3121be77f0 100644 --- a/windows/client-management/declared-configuration-extensibility.md +++ b/windows/client-management/declared-configuration-extensibility.md @@ -1,16 +1,16 @@ --- -title: Declared Configuration Extensibility -description: Learn more about Declared Configuration extensibility through native WMI providers. -ms.date: 09/11/2023 +title: Declared configuration extensibility +description: Learn more about declared configuration extensibility through native WMI providers. +ms.date: 09/26/2023 ms.topic: how-to --- -# Declared Configuration Extensibility Providers +# Declared configuration extensibility providers -The Declared Configuration enrollment supporting the Declared Configuration client stack, offers Extensibility through native WMI providers. This feature instantiates and interfaces with a Windows Management Instrumentation (WMI) provider that has implemented an MI interface. The interface must implement GetTargetResource, TestTargetResource, and SetTargetResource methods, and may implement any number of string properties. +The declared configuration enrollment, which supports the declared configuration client stack, offers extensibility through native WMI providers. This feature instantiates and interfaces with a Windows Management Instrumentation (WMI) provider that has implemented a management infrastructure (MI) interface. The interface must implement GetTargetResource, TestTargetResource, and SetTargetResource methods, and may implement any number of string properties. > [!NOTE] -> Only string properties are currently supported by Extensibility providers. +> Only string properties are currently supported by extensibility providers. ```mof [static, Description ("Get resource state based on input configuration file." )] @@ -47,14 +47,14 @@ uint32 SetTargetResource( ); ``` -## Author DSC resources +## Author desired state configuration resources -To create a native WMI provider, follow the steps outlined in [How to Implement an MI Provider](/previous-versions/windows/desktop/wmi_v2/how-to-implement-an-mi-provider). These steps include generating the source code for MI interface using `Convert-MofToProvider.exe` tool to generate the DLL and prepare it for placement. +To create a native WMI provider, follow the steps outlined in [How to implement an MI provider](/previous-versions/windows/desktop/wmi_v2/how-to-implement-an-mi-provider). These steps include how to generate the source code for an MI interface using the `Convert-MofToProvider.exe` tool to generate the DLL and prepare it for placement. -1. Create a MOF file that defines the schema for DSC resource including parameters and methods. This file includes the required parameters for the resource. +1. Create a MOF file that defines the schema for the desired state configuration resource including parameters and methods. This file includes the required parameters for the resource. 2. Copy the schema MOF file along with any required files into the provider tools directory, for example: ProviderGenerationTool. 3. Edit the required files and include the correct file names and class names. -4. Invoke the provider generator tool to generate provider's project files. +4. Invoke the provider generator tool to generate the provider's project files. 5. Copy the generated files into the provider's project folder. 6. Start the development process. @@ -64,7 +64,7 @@ This example provides more details about each step to demonstrate how to impleme ### Step 1: Create the resource schema MOF file -Create a sample schema MOF file used to generate the initial source code for the `MSFT_FileDirectoryConfiguration` native resource and place it in the project directory named `MSFT_FileDirectoryConfiguration`. +Create a sample schema MOF file used to generate the initial source code for the `MSFT_FileDirectoryConfiguration` native resource. Place it in the project directory named `MSFT_FileDirectoryConfiguration`. ```mof #pragma include ("cim_schema_2.26.0.mof") @@ -126,11 +126,11 @@ class MSFT_FileDirectoryConfiguration : OMI_BaseResource > [!NOTE] > -> - Class name and DLL file name should be the same; as defined in `Provider.DEF` file. -> - The type qualifier, `[Key]`, on a property indicates that this property will uniquely identify the resource instance. At least one `[Key]` property is required. -> - The `[Required]` qualifier indicates that the property is required (a value must be specified in any configuration script that uses this resource). -> - The `[write]` qualifier indicates that this property is optional when using the custom resource in a configuration script. The `[read]` qualifier indicates that a property cannot be set by a configuration, and is for reporting purposes only. -> - `[Values]` qualifier restricts the values that can be assigned to the property to the list of values defined in `[ValueMap]`. For more information, see [ValueMap and Value Qualifiers](/windows/win32/wmisdk/value-map). +> - The class name and DLL file name should be the same, as defined in the `Provider.DEF` file. +> - The type qualifier `[Key]` on a property indicates that it uniquely identifies the resource instance. At least one `[Key]` property is required. +> - The `[Required]` qualifier indicates that the property is required. In other words, a value must be specified in any configuration script that uses this resource. +> - The `[write]` qualifier indicates that the property is optional when using the custom resource in a configuration script. The `[read]` qualifier indicates that a property can't be set by a configuration, and is for reporting purposes only. +> - The `[Values]` qualifier restricts the values that can be assigned to the property. Define the list of allowed values in `[ValueMap]`. For more information, see [ValueMap and value qualifiers](/windows/win32/wmisdk/value-map). > - Any new MOF file should include the following lines at the top of the file: > > ```mof @@ -145,25 +145,25 @@ class MSFT_FileDirectoryConfiguration : OMI_BaseResource Copy these required files and folders to the project directory you created in step 1: -- CIM-2.26.0 -- codegen.cmd -- Convert-MofToProvider.exe -- MSFT_Credential.mof -- MSFT_DSCResource.mof -- OMI_BaseResource.mof -- OMI_Errors.mof -- Provider.DEF -- wmicodegen.dll +- `CIM-2.26.0` +- `codegen.cmd` +- `Convert-MofToProvider.exe` +- `MSFT_Credential.mof` +- `MSFT_DSCResource.mof` +- `OMI_BaseResource.mof` +- `OMI_Errors.mof` +- `Provider.DEF` +- `wmicodegen.dll` -For more information on how to obtain the required files, see [How to Implement an MI Provider](/previous-versions/windows/desktop/wmi_v2/how-to-implement-an-mi-provider). +For more information on how to obtain the required files, see [How to implement an MI provider](/previous-versions/windows/desktop/wmi_v2/how-to-implement-an-mi-provider). ### Step 3: Edit the required files Modify the following files in the project directory: -- MSFT_FileDirectoryConfiguration.mof: This is the file that was created in step 1. -- Provider.DEF: This file contains the DLL name, for example, `MSFT_FileDirectoryConfiguration.dll`. -- codegen.cmd: This file contains the command to invoke `convert-moftoprovider.exe`. +- `MSFT_FileDirectoryConfiguration.mof`: You created this file in step 1. +- `Provider.DEF`: This file contains the DLL name, for example, `MSFT_FileDirectoryConfiguration.dll`. +- `codegen.cmd`: This file contains the command to invoke `convert-moftoprovider.exe`. ```cmd "convert-moftoprovider.exe" ^ @@ -177,73 +177,75 @@ Modify the following files in the project directory: -OutPath temp ``` -### Step 4: Invoke the provider generator tool +### Step 4: Run the provider generator tool -Run `codegen.cmd`, which invokes the `convert-moftoprovider.exe` command. Alternatively, you can run the command directly. +Run `codegen.cmd`, which runs the `convert-moftoprovider.exe` command. Alternatively, you can run the command directly. -### Step 5: Copy generated source files +### Step 5: Copy the generated source files -Copy the generated files from the `temp` folder that was specified with `-OutPath` parameter in the command from step 3 to the project directory you created in step 1. +The command in step 3 specifies the `-OutPath` parameter, which in this example is a folder named `temp`. When you run the tool in step 4, it creates new files in this folder. Copy the generated files from this `temp` folder to the project directory. You created the project directory in step 1, which in this example is `MSFT_FileDirectoryConfiguration`. > [!NOTE] -> With each update to the schema MOF file, `codegen.cmd` script to regenerate the source files must be executed again, which overwrites the source files if they exist. To prevent this, this example uses a temporary folder. It is best to minimize the updates to the schema MOF file since the main implementation should be merged with the most recent auto-generated source files. +> Any time you update the schema MOF file, run the `codegen.cmd` script to regenerate the source files. Rerunning the generator tool overwrites any existing the source files. To prevent this behavior, this example uses a temporary folder. Minimize updates to the schema MOF file since the main implementation should be merged with the most recent auto-generated source files. -### About MSFT_FileDirectoryConfiguration resource +### About the `MSFT_FileDirectoryConfiguration` resource -After you run the provider generator tool, several source and header files are created, including: +After you run the provider generator tool, it creates several source and header files: -- MSFT_FileDirectoryConfiguration.c -- MSFT_FileDirectoryConfiguration.h -- module.c -- schema.c -- WMIAdapter.c +- `MSFT_FileDirectoryConfiguration.c` +- `MSFT_FileDirectoryConfiguration.h` +- `module.c` +- `schema.c` +- `WMIAdapter.c` -From this list, only `MSFT_FileDirectoryConfiguration.c` and `MSFT_FileDirectoryConfiguration.h` need modifications. The extension for the source files can be changed from `c` to `cpp` too (which is the case for this resource). The business logic for this resource is implemented in `MSFT_FileDirectoryConfigurationImp.cpp` and `MSFT_FileDirectoryConfigurationImp.h`. These new files are added to the MSFT_FileDirectoryConfiguration directory after the provider generator tool was invoked. +From this list, you only need to modify `MSFT_FileDirectoryConfiguration.c` and `MSFT_FileDirectoryConfiguration.h`. You can also change the extension for the source files from `.c` to `.cpp`, which is the case for this resource. The business logic for this resource is implemented in `MSFT_FileDirectoryConfigurationImp.cpp` and `MSFT_FileDirectoryConfigurationImp.h`. These new files are added to the `MSFT_FileDirectoryConfiguration` project directory after you run the provider generator tool. -There are three auto-generated functions in MSFT_FileDirectoryConfiguration.cpp that must be implemented for a native DSC resource: +For a native desired state configuration resource, you have to implement three autogenerated functions in `MSFT_FileDirectoryConfiguration.cpp`: -- MSFT_FileDirectoryConfiguration_Invoke_GetTargetResource -- MSFT_FileDirectoryConfiguration_Invoke_TestTargetResource -- MSFT_FileDirectoryConfiguration_Invoke_SetTargetResource +- `MSFT_FileDirectoryConfiguration_Invoke_GetTargetResource` +- `MSFT_FileDirectoryConfiguration_Invoke_TestTargetResource` +- `MSFT_FileDirectoryConfiguration_Invoke_SetTargetResource` -From these three functions, only MSFT_FileDirectoryConfiguration_Invoke_GetTargetResource is required for a Get scenario. MSFT_FileDirectoryConfiguration_Invoke_TestTargetResource and MSFT_FileDirectoryConfiguration_Invoke_SetTargetResource are used when remediation is needed. Besides these three functions, there are several other auto-generated functions in MSFT_FileDirectoryConfiguration.cpp that don't need implementation for a native DSC resource and should be left as-is. +From these three functions, only `MSFT_FileDirectoryConfiguration_Invoke_GetTargetResource` is required for a Get scenario. `MSFT_FileDirectoryConfiguration_Invoke_TestTargetResource` and `MSFT_FileDirectoryConfiguration_Invoke_SetTargetResource` are used when remediation is needed. -- MSFT_FileDirectoryConfiguration_Load -- MSFT_FileDirectoryConfiguration_Unload -- MSFT_FileDirectoryConfiguration_EnumerateInstances -- MSFT_FileDirectoryConfiguration_GetInstance -- MSFT_FileDirectoryConfiguration_CreateInstance -- MSFT_FileDirectoryConfiguration_ModifyInstance -- MSFT_FileDirectoryConfiguration_DeleteInstance +There are several other autogenerated functions in `MSFT_FileDirectoryConfiguration.cpp` that don't need implementation for a native desired state configuration resource. You don't need to modify the following functions: -### About MSFT_FileDirectoryConfiguration_Invoke_GetTargetResource +- `MSFT_FileDirectoryConfiguration_Load` +- `MSFT_FileDirectoryConfiguration_Unload` +- `MSFT_FileDirectoryConfiguration_EnumerateInstances` +- `MSFT_FileDirectoryConfiguration_GetInstance` +- `MSFT_FileDirectoryConfiguration_CreateInstance` +- `MSFT_FileDirectoryConfiguration_ModifyInstance` +- `MSFT_FileDirectoryConfiguration_DeleteInstance` -MSFT_FileDirectoryConfiguration_Invoke_GetTargetResource function performs these steps to complete its task: +### About `MSFT_FileDirectoryConfiguration_Invoke_GetTargetResource` + +The `MSFT_FileDirectoryConfiguration_Invoke_GetTargetResource` function does the following steps to complete its task: 1. Validate the input resource. 1. Ensure the keys and required parameters are present. -1. Create a resource instance that is used as the output of the Get method. This instance is of type **MSFT_FileDirectoryConfiguration**, which is derived from **MI_Instance**. +1. Create a resource instance that is used as the output of the Get method. This instance is of type `MSFT_FileDirectoryConfiguration`, which is derived from `MI_Instance`. 1. Create the output resource instance from the modified resource instance and return it to the MI client by calling these functions: - - MSFT_FileDirectoryConfiguration_GetTargetResource_Construct - - MSFT_FileDirectoryConfiguration_GetTargetResource_SetPtr_OutputResource - - MSFT_FileDirectoryConfiguration_GetTargetResource_Set_MIReturn - - MSFT_FileDirectoryConfiguration_GetTargetResource_Post - - MSFT_FileDirectoryConfiguration_GetTargetResource_Destruct + - `MSFT_FileDirectoryConfiguration_GetTargetResource_Construct` + - `MSFT_FileDirectoryConfiguration_GetTargetResource_SetPtr_OutputResource` + - `MSFT_FileDirectoryConfiguration_GetTargetResource_Set_MIReturn` + - `MSFT_FileDirectoryConfiguration_GetTargetResource_Post` + - `MSFT_FileDirectoryConfiguration_GetTargetResource_Destruct` 1. Clean up resources, for example, free allocated memory. ## MI implementation references -- [Introducing new Management Infrastructure (MI) API](https://blogs.msdn.microsoft.com/wmi/2013/05/16/introducing-new-management-infrastructure-mi-api/) -- [Implementing MI Provider (1) - Overview](https://blogs.msdn.microsoft.com/wmi/2013/05/08/implementing-mi-provider-1-overview/) -- [Implementing MI Provider (2) - Define Schema](https://blogs.msdn.microsoft.com/wmi/2013/05/08/implementing-mi-provider-2-define-schema/) -- [Implementing MI Provider (3) - Generate Code](https://blogs.msdn.microsoft.com/wmi/2013/05/11/implementing-mi-provider-3-generate-code/) -- [Implementing MI Provider (4) - Generate Code (continue)](https://blogs.msdn.microsoft.com/wmi/2013/12/28/implementing-mi-provider-4-generate-code-continute/) -- [Implementing MI Provider (5) - Implement](https://blogs.msdn.microsoft.com/wmi/2013/12/28/implementing-mi-provider-5-implement/) -- [Implementing MI Provider (6) - Build, Register, and Debug](https://blogs.msdn.microsoft.com/wmi/2013/12/28/implementing-mi-provider-6-build-register-and-debug/) -- [MI Interfaces](/previous-versions/windows/desktop/wmi_v2/mi-interfaces) -- [MI Datatypes](/previous-versions/windows/desktop/wmi_v2/mi-datatypes) -- [MI Structures and Unions](/previous-versions/windows/desktop/wmi_v2/mi-structures-and-unions) -- [MI_Result Enumeration](/windows/win32/api/mi/ne-mi-mi_result) -- [MI_Type Enumeration](/windows/win32/api/mi/ne-mi-mi_type) +- [Introducing the management infrastructure (MI) API](/archive/blogs/wmi/introducing-new-management-infrastructure-mi-api) +- [Implementing MI provider (1) - Overview](/archive/blogs/wmi/implementing-mi-provider-1-overview) +- [Implementing MI provider (2) - Define schema](/archive/blogs/wmi/implementing-mi-provider-2-define-schema) +- [Implementing MI provider (3) - Generate code](/archive/blogs/wmi/implementing-mi-provider-3-generate-code) +- [Implementing MI provider (4) - Generate code (continue)](/archive/blogs/wmi/implementing-mi-provider-4-generate-code-continute) +- [Implementing MI provider (5) - Implement](/archive/blogs/wmi/implementing-mi-provider-5-implement) +- [Implementing MI provider (6) - Build, register, and debug](/archive/blogs/wmi/implementing-mi-provider-6-build-register-and-debug) +- [MI interfaces](/previous-versions/windows/desktop/wmi_v2/mi-interfaces) +- [MI datatypes](/previous-versions/windows/desktop/wmi_v2/mi-datatypes) +- [MI structures and unions](/previous-versions/windows/desktop/wmi_v2/mi-structures-and-unions) +- [MI_Result enumeration (mi.h)](/windows/win32/api/mi/ne-mi-mi_result) +- [MI_Type enumeration (mi.h)](/windows/win32/api/mi/ne-mi-mi_type) diff --git a/windows/client-management/declared-configuration.md b/windows/client-management/declared-configuration.md index d985905be3..9462a0c4f8 100644 --- a/windows/client-management/declared-configuration.md +++ b/windows/client-management/declared-configuration.md @@ -1,34 +1,34 @@ --- -title: Declared Configuration protocol -description: Learn more about using Declared Configuration protocol for desired state management of Windows devices. -ms.date: 09/11/2023 +title: Declared configuration protocol +description: Learn more about using declared configuration protocol for desired state management of Windows devices. +ms.date: 09/26/2023 ms.topic: overview --- -# What is Declared Configuration protocol +# What is the declared configuration protocol -The Declared Configuration protocol is based on a desired state device configuration model though it still utilizes the underlying OMA-DM and Syncml protocol. Through a dedicated OMA-DM server, it provides all the settings in a single batch through this new protocol. The device's Declared Configuration client stack can reason over the settings to achieve the desired scenario in the most efficient and reliable manner. +The declared configuration protocol is based on a desired state device configuration model, though it still uses the underlying OMA-DM Syncml protocol. Through a dedicated OMA-DM server, it provides all the settings in a single batch through this protocol. The device's declared configuration client stack can reason over the settings to achieve the desired scenario in the most efficient and reliable manner. -The Declared Configuration protocol requires that a device has a separate [OMA-DM enrollment](mdm-overview.md), which is dependent on the device being enrolled with the primary OMA-DM server. The desired state model is a different model from the current model where the Server is responsible for the device's desire state. This dual enrollment is only allowed if the device is already enrolled into a primary MDM Server. The new enrollment separates the desired state management functionality from the primary functionality. The Declared Configuration enrollment's first desired state management model feature is called [Extensibility](declared-configuration-extensibility.md). +The declared configuration protocol requires that a device has a separate [OMA-DM enrollment](mdm-overview.md), which is dependent on the device being enrolled with the primary OMA-DM server. The desired state model is a different model from the current model where the server is responsible for the device's desire state. This dual enrollment is only allowed if the device is already enrolled into a primary MDM server. This other enrollment separates the desired state management functionality from the primary functionality. The declared configuration enrollment's first desired state management model feature is called [extensibility](declared-configuration-extensibility.md). -:::image type="content" source="images/declared-configuration-model.png" alt-text="Diagram illustrating the Declared configuration model."::: +:::image type="content" source="images/declared-configuration-model.png" alt-text="Diagram illustrating the declared configuration model."::: -With the new [Declared Configuration CSP](mdm/declaredconfiguration-csp.md), the OMA-DM server can provide the device with the complete collection of setting names and associated values based on a specified scenario. The Declared Configuration stack on the device is responsible for handling the configuration request, and maintaining its state including updates to the scenario. +With the [Declared Configuration CSP](mdm/declaredconfiguration-csp.md), the OMA-DM server can provide the device with the complete collection of setting names and associated values based on a specified scenario. The declared configuration stack on the device is responsible for handling the configuration request, and maintaining its state including updates to the scenario. -The benefit of the Declared Configuration desired state model is that it's efficient and accurate, especially since it's the responsibility of the Declared Configuration client to configure the device. The efficiency of Declared Configuration is in the fact that the batches of scenario settings are processed by the client asynchronously, freeing up the server resources to do other work. Thus, the Declared Configuration protocol has low latency. As for configuration quality and accuracy, the Declared Configuration client stack has intimate knowledge of the configuration surface area of the device including the proper handling of continuous device updates affecting the configuration scenario. +The benefit of the declared configuration desired state model is that it's efficient and accurate, especially since it's the responsibility of the declared configuration client to configure the device. The efficiency of declared configuration is because the client can asynchronously process batches of scenario settings, which free up the server resources to do other work. Thus the declared configuration protocol has low latency. As for configuration quality and accuracy, the declared configuration client stack has detailed knowledge of the configuration surface area of the device. This behavior includes the proper handling of continuous device updates that affect the configuration scenario. -## Declared Configuration enrollment +## Declared configuration enrollment -[Mobile Device Enrollment Protocol Version 2](/openspecs/windows_protocols/ms-mde2/4d7eadd5-3951-4f1c-8159-c39e07cbe692) describes enrollment including discovery, which covers the primary and Declared Configuration enrollments. The Declared Configuration dual enrollment is performed by new DMClient CSP nodes, which are listed here: +[Mobile Device Enrollment Protocol version 2](/openspecs/windows_protocols/ms-mde2/4d7eadd5-3951-4f1c-8159-c39e07cbe692) describes enrollment including discovery, which covers the primary and declared configuration enrollments. The device uses the following new [DMClient CSP](mdm/dmclient-csp.md) policies for declared configuration dual enrollment: -- [LinkedEnrollment/Priority](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentpriority) +- [LinkedEnrollment/Priority](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentpriority) - [LinkedEnrollment/Enroll](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentenroll) - [LinkedEnrollment/Unenroll](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentunenroll) - [LinkedEnrollment/EnrollStatus](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentenrollstatus) - [LinkedEnrollment/LastError](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentlasterror) - [LinkedEnrollment/DiscoveryEndpoint](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentdiscoveryendpoint) -Here's a SyncML example for setting **LinkedEnrolment/DiscoveryEndpoint** and triggering **LinkedEnrollment/Enroll**: +The following SyncML example sets **LinkedEnrolment/DiscoveryEndpoint** and triggers **LinkedEnrollment/Enroll**: ```xml diff --git a/windows/client-management/mdm/declaredconfiguration-csp.md b/windows/client-management/mdm/declaredconfiguration-csp.md index 7f95053f24..c90601f74d 100644 --- a/windows/client-management/mdm/declaredconfiguration-csp.md +++ b/windows/client-management/mdm/declaredconfiguration-csp.md @@ -4,7 +4,7 @@ description: Learn more about the DeclaredConfiguration CSP. author: vinaypamnani-msft manager: aaroncz ms.author: vinpa -ms.date: 09/13/2023 +ms.date: 09/27/2023 ms.localizationpriority: medium ms.prod: windows-client ms.technology: itpro-manage @@ -20,13 +20,16 @@ ms.topic: reference -The Primary MDM Management device management model is one where the MDM server is solely responsible for orchestration and continuous maintenance of the state of the device for configuration scenarios. This results in intensive network traffic and high network latency due to the synchronous configuration model based on the OMA-DM Syncml standard. It's also error-prone given that the server needs intimate knowledge of client handling of configuration. +The primary MDM model is one where the MDM server is solely responsible for orchestration and continuous maintenance of the state of the device for configuration scenarios. This behavior results in intensive network traffic and high network latency due to the synchronous configuration model based on the OMA-DM Syncml standard. It's also error-prone given that the server needs deep knowledge of the client. -The new Declared Configuration device management model requires the server to deliver all the setting values to the device for the scenario configuration, in batch, asynchronously through the client Declared Configuration CSP. +The declared configuration device management model requires the server to deliver all the setting values to the device for the scenario configuration. The server sends them asynchronously in batches through the client declared configuration CSP. + +- During the client-initiated OMA-DM session, the declared configuration server sends a configuration or an inventory declared configuration document to the client through the [Declared Configuration CSP URI](#declared-configuration-oma-uri). If the device verifies the syntax of the document is correct, the client stack pushes the request to its orchestrator to process the request asynchronously. The client stack then exits, and returns control back to the declared configuration service. This behavior allows the device to asynchronously process the request. + +- On the client, if there are any requests in process or completed, it sends a [generic alert](#declared-configuration-generic-alert) to the server. This alert summarizes each document's status, state, and progress. Every client HTTPS request to the declared configuration OMA-DM server includes this summary. + +- The declared configuration server uses the generic alert to determine which requests are completed successfully or with errors. The server can then synchronously retrieve the declared configuration document process results through the [Declared Configuration CSP URI](#declared-configuration-oma-uri). -- During the client initiated OMA-DM session, the Declared Configuration server sends a configuration or an inventory Declared Configuration document to the client through the [Declared Configuration CSP URI](#declared-configuration-oma-uri). If the device verifies the syntax of the document is correct, the client stack pushes the request to its orchestrator to be processed asynchronously. The client stack then exits, returning control back to Declared Configuration service allowing the device to asynchronously process the request. -- On the client, if there are any requests in process or completed, a [generic alert](#declared-configuration-generic-alert) is sent to the server summing up each document status, state, progress. This summation is sent on every client HTTP request to the Declared Configuration OMA-DM server. -- The Declared Configuration server uses the Alert to determine which requests are completed successfully or with errors. The server can then synchronously retrieve the Declared Configuration document process results through the [Declared Configuration CSP URI](#declared-configuration-oma-uri). @@ -115,7 +118,7 @@ The following list shows the DeclaredConfiguration configuration service provide -The Server to Client flow of the Complete request, is the same as an Inventory request. +The server to client flow of the **Complete** request is the same as an **Inventory** request. @@ -471,7 +474,7 @@ The Server to Client flow of the Complete request, is the same as an Inventory r -The Server to Client flow of the Inventory request, is the same as the Complete request. +The server to client flow of the **Inventory** request is the same as the **Complete** request. @@ -892,26 +895,26 @@ This node determines whether or not to start a sync session when failed to refre -## Declared Configuration OMA URI +## Declared configuration OMA URI -A Declared Configuration request is sent using an OMA-URI similar to `./Device/Vendor/MSFT/DeclaredConfiguration/Host/[Complete|Inventory]/Documents/{DocID}/Document`. +A declared configuration request is sent using an OMA-URI similar to `./Device/Vendor/MSFT/DeclaredConfiguration/Host/[Complete|Inventory]/Documents/{DocID}/Document`. -- The URI is prefixed with a targeted scope. The target of the scenario settings can only be device wide for Extensibility. The scope should be "Device". -- `{DocID}` is a unique identifier for the desired state of the configuration scenario. Every document must have a ID, which must be a GUID. -- The request can be a Configuration request, Inventory or Complete. +- The URI is prefixed with a targeted scope. The target of the scenario settings can only be device wide for extensibility. The scope should be `Device`. +- `{DocID}` is a unique identifier for the desired state of the configuration scenario. Every document must have an ID, which must be a GUID. +- The request can be a **Configuration**, **Inventory**, or **Complete** request. -Example URI for a Complete request: `./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/27FEA311-68B9-4320-9FC4-296F6FDFAFE2/Document` +The following URI is an example of a **Complete** request: `./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/27FEA311-68B9-4320-9FC4-296F6FDFAFE2/Document` -## DeclaredConfiguration Document XML +## DeclaredConfiguration document XML -The value of the leaf node Document is an XML document describing the request. The actual processing of the request pivots around the `osdefinedscenario` tag: +The value of the leaf node `Document` is an XML document that describes the request. The actual processing of the request pivots around the `osdefinedscenario` tag: -- **MSFTExtensibilityMIProviderConfig**: Used to configure MI Provider settings. -- **MSFTExtensibilityMIProviderInventory**: Used to retrieve MI Provider setting values. +- `MSFTExtensibilityMIProviderConfig`: Used to configure MI provider settings. +- `MSFTExtensibilityMIProviderInventory`: Used to retrieve MI provider setting values. -The DeclaredConfiguration CSP will synchronously validate the batch of settings described by the `` element, which represents the Declared Configuration document. It checks for correct syntax based on the Declared Configuration XML schema. If there's a syntax error, the CSP returns an error immediately back to the server as part of the current OMA-DM session. If the syntax check passes, then the request is passed on to a Windows service to attempt the desired state configuration of the specified scenario, asynchronously, freeing up the server to do other work thus the low latency of the new Declared Configuration protocol. The Windows client service, the orchestrator, is responsible for driving the configuration of the device based on the server supplied desire state, and to maintain it throughout its lifetime, until it's removed or modified by the server. +The DeclaredConfiguration CSP synchronously validates the batch of settings described by the `` element, which represents the declared configuration document. It checks for correct syntax based on the declared configuration XML schema. If there's a syntax error, the CSP returns an error immediately back to the server as part of the current OMA-DM session. If the syntax check passes, then the request is passed on to a Windows service. The Windows service asynchronously attempts the desired state configuration of the specified scenario. This process frees up the server to do other work thus the low latency of this declared configuration protocol. The Windows client service, the orchestrator, is responsible for driving the configuration of the device based on the server supplied desire state. The service also maintains this state throughout its lifetime, until the server removes or modifies it. -Here's an example that uses the built-in native MI provider **MSFT_FileDirectoryConfiguration** with the OS defined scenario **MSFTExtensibilityMIProviderConfig**. +The following example uses the built-in, native MI provider `MSFT_FileDirectoryConfiguration` with the OS-defined scenario `MSFTExtensibilityMIProviderConfig`: ```xml @@ -922,7 +925,7 @@ Here's an example that uses the built-in native MI provider **MSFT_FileDirectory ``` -The standard OMA-DM SyncML syntax is used to specify the DeclaredConfiguration CSP operations such as Replace, Set, and Delete. The payload of the SyncML's `` element must be XML-encoded; for this XML encoding, there are a variety of online encoders that you can use. To avoid encoding the payload, you can use [CDATA Section](http://www.w3.org/TR/REC-xml/#sec-cdata-sect) as shown in this example. +The standard OMA-DM SyncML syntax is used to specify the DeclaredConfiguration CSP operations such as **Replace**, **Set**, and **Delete**. The payload of the SyncML's `` element must be XML-encoded. For this XML encoding, there are various online encoders that you can use. To avoid encoding the payload, you can use [CDATA Section](https://www.w3.org/TR/REC-xml/#sec-cdata-sect) as shown in the following example: ```xml @@ -951,48 +954,48 @@ The standard OMA-DM SyncML syntax is used to specify the DeclaredConfiguration C ### DeclaredConfiguration XML document tags -Both MSFTExtensibilityMIProviderConfig and MSFTExtensibilityMIProviderInventory OS defined scenarios require the same tags and attributes. +Both `MSFTExtensibilityMIProviderConfig` and `MSFTExtensibilityMIProviderInventory` are OS-defined scenarios that require the same tags and attributes. -- `` XML tag specifies the details of the Declared Configuration document to process. The document could be part of a configuration request or an inventory request. The Declared Configuration CSP has two URIs to allow the specification of a configuration or an inventory request. +- The `` XML tag specifies the details of the declared configuration document to process. The document could be part of a configuration request or an inventory request. The DeclaredConfiguration CSP has two URIs to allow the specification of a configuration or an inventory request. This tag has the following attributes: | Attribute | Description | |--|--| - | schema | The schema version of the xml. Currently `1.0`. | - | context | States that this document is targeting the device. The value should be `Device`. | - | id | The unique identifier of the document set by the server. This should be a GUID. | - | checksum | This is the server supplied version of the document. | - | osdefinedscenario | The named scenario that is to be configured with the given configuration data. In case of Extensibility, the scenario is either MSFTExtensibilityMIProviderConfig or MSFTExtensibilityMIProviderInventory. | + | `schema` | The schema version of the xml. Currently `1.0`. | + | `context` | States that this document is targeting the device. The value should be `Device`. | + | `id` | The unique identifier of the document set by the server. This value should be a GUID. | + | `checksum` | This value is the server-supplied version of the document. | + | `osdefinedscenario` | The named scenario that the client should configure with the given configuration data. For extensibility, the scenario is either `MSFTExtensibilityMIProviderConfig` or `MSFTExtensibilityMIProviderInventory`. | -- `` XML tag describes the targeted WMI provider expressed by a namespace and classname along with the values either to be applied to the device or queried by the MI provider. +- The `` XML tag describes the targeted WMI provider expressed by a namespace and class name along with the values either to be applied to the device or queried by the MI provider. This tag has the following attributes: | Attribute | Description | |--|--| - | namespace | Specifies the targeted MI Provider namespace. | - | classname | The targeted MI provider. | + | `namespace` | Specifies the targeted MI provider namespace. | + | `classname` | The targeted MI provider. | -- `` XML tag describes the required parameter name and value (only need value for configuration). The name is an attribute and the value is `` content. +- The `` XML tag describes the required parameter name and value. It only needs a value for configuration. The name is an attribute and the value is `` content. This tag has the following attributes: | Attribute | Description | |--|--| - | name | Specifies the name of a MI Provider parameter. | + | `name` | Specifies the name of an MI provider parameter. | -- `` XML tag describes the non-required parameter name and value (only need value for configuration). The name is an attribute and the value is `` content. +- The `` XML tag describes the optional parameter name and value. It only needs a value for configuration. The name is an attribute and the value is `` content. This tag has the following attributes: | Attribute | Description | |--|--| - | name | Specifies the name of a MI Provider parameter. | + | `name` | Specifies the name of an MI provider parameter. | -## Declared Configuration generic alert +## Declared configuration generic alert -On every client response to the server's request, the client constructs a Declared Configuration alert summing up the state of each of the documents that the Windows service has processed. Here's an example alert: +On every client response to the server's request, the client constructs a declared configuration alert. This alert summarizes the state of each of the documents that the Windows service has processed. The following XML is an example alert: ```xml @@ -1015,7 +1018,9 @@ On every client response to the server's request, the client constructs a Declar ``` -In this example, there's one Declared Configuration document listed in the Alert summary. The Alert summary lists every document that is being processed by the client stack be it a configuration or inventory request. It describes the context of the document that specifies the scope of how the document is applied. The value should be "Device". The "state" attribute has a value of 60, which indicates that the document was processed successfully. Other state values are: +In this example, there's one declared configuration document listed in the alert summary. The alert summary lists every document that the client stack is processing, either a configuration or inventory request. It describes the context of the document that specifies the scope of how the document is applied. The **context** value should be `Device`. + +The **state** attribute has a value of `60`, which indicates that the document was processed successfully. The following class defines the other state values: ```csharp enum class DCCSPURIState :unsigned long @@ -1049,7 +1054,7 @@ enum class DCCSPURIState :unsigned long ## SyncML examples -- Retrieve the results of Configuration or Inventory Request: +- Retrieve the results of a configuration or inventory request: ```xml @@ -1099,7 +1104,7 @@ enum class DCCSPURIState :unsigned long ``` -- Replace a Configuration or Inventory Request +- Replace a configuration or inventory request ```xml @@ -1152,7 +1157,7 @@ enum class DCCSPURIState :unsigned long ``` -- Abandon a Configuration or Inventory Request: This results in the document being tracked but not be reapplied. The Alert has the "Abandoned" property set to 1 to indicate that the document is no longer managed by the Declared Configuration server. +- Abandon a configuration or inventory request. This process results in the client tracking the document but not reapplying it. The alert has the `Abandoned` property set to `1`, which indicates that the document is no longer managed by the declared configuration server. ```xml @@ -1175,7 +1180,7 @@ enum class DCCSPURIState :unsigned long ``` -- Deletion of Configuration or Inventory Request: The SyncML deletion of the document will only remove the document but the Extensibility settings remain tattooed. +- Deletion of configuration or inventory request. The SyncML deletion of the document only removes the document but any extensibility settings persist on the device (tattoo). ```xml From 009729d7aecb273abef6e0e2b9509a322bdb388b Mon Sep 17 00:00:00 2001 From: Aaron Czechowski Date: Wed, 27 Sep 2023 16:16:21 -0700 Subject: [PATCH 11/12] update declared config csps --- .../mdm/declaredconfiguration-csp.md | 230 +++--------------- .../mdm/declaredconfiguration-ddf-file.md | 155 ++---------- windows/client-management/mdm/dmclient-csp.md | 97 ++++---- .../mdm/dmclient-ddf-file.md | 72 +++--- 4 files changed, 135 insertions(+), 419 deletions(-) diff --git a/windows/client-management/mdm/declaredconfiguration-csp.md b/windows/client-management/mdm/declaredconfiguration-csp.md index c90601f74d..ac422bfdcc 100644 --- a/windows/client-management/mdm/declaredconfiguration-csp.md +++ b/windows/client-management/mdm/declaredconfiguration-csp.md @@ -29,7 +29,6 @@ The declared configuration device management model requires the server to delive - On the client, if there are any requests in process or completed, it sends a [generic alert](#declared-configuration-generic-alert) to the server. This alert summarizes each document's status, state, and progress. Every client HTTPS request to the declared configuration OMA-DM server includes this summary. - The declared configuration server uses the generic alert to determine which requests are completed successfully or with errors. The server can then synchronously retrieve the declared configuration document process results through the [Declared Configuration CSP URI](#declared-configuration-oma-uri). - @@ -53,10 +52,6 @@ The following list shows the DeclaredConfiguration configuration service provide - [Results](#hostinventoryresults) - [{DocID}](#hostinventoryresultsdocid) - [Document](#hostinventoryresultsdociddocument) - - [ManagementServiceConfiguration](#managementserviceconfiguration) - - [CertificateExpirationThreshold](#managementserviceconfigurationcertificateexpirationthreshold) - - [RefreshInterval](#managementserviceconfigurationrefreshinterval) - - [StartSyncSessionOnFailure](#managementserviceconfigurationstartsyncsessiononfailure) @@ -75,7 +70,8 @@ The following list shows the DeclaredConfiguration configuration service provide - + +The Host internal node indicates that the target of the configuration request or inventory request is the host OS. This node is for scope in case enclaves are ever targeted for configuration. @@ -113,7 +109,8 @@ The following list shows the DeclaredConfiguration configuration service provide - + +This internal node indicates that the configuration has discrete settings values and is self-contained with complete setting and value pairs that don't contain placeholders that the need to be resolved later with additional data. The request is ready to be processed as is. @@ -152,7 +149,8 @@ The server to client flow of the **Complete** request is the same as an **Invent - + +The Documents node indicates that the configuration is in the form of a document, which is a collection of settings used to configure a scenario by the Declared Configuration stack. @@ -190,7 +188,8 @@ The server to client flow of the **Complete** request is the same as an **Invent - + +Uniquely identifies the configuration document. No other document can have this id. The Id should be a GUID. @@ -230,7 +229,8 @@ The server to client flow of the **Complete** request is the same as an **Invent - + +The Document node's value is an XML based document containing a collection of settings and values to configure the specified scenario. The Declared Configuration stack verifies the syntax of the document, the stack marks the document to be processed asynchronously by the client. The stack then returns control back to the OMA-DM service. The stack, in turn, asynchronously processes the request. Below is an example of a specified desired state configuration using the Declared Configuration URI ./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/27FEA311-68. B9-4320-9. FC4-296. F6FDFAFE2/Document. @@ -268,7 +268,8 @@ The server to client flow of the **Complete** request is the same as an **Invent - + +The Properties node encapsulates the list of properties that apply to the specified document referenced by [DocID]. @@ -306,7 +307,8 @@ The server to client flow of the **Complete** request is the same as an **Invent - + +The Abandoned node allows the OMA-DM server to indicate that the document is no longer managed. @@ -328,8 +330,8 @@ The server to client flow of the **Complete** request is the same as an **Invent | Value | Description | |:--|:--| -| 0 (Default) | Insert Description Here. | -| 1 | Insert Description Here. | +| 0 (Default) | The document is no longer managed. | +| 1 | The document is managed. | @@ -354,7 +356,8 @@ The server to client flow of the **Complete** request is the same as an **Invent - + +The Results node indicates that this is part of the URI path that will return an XML document containing the results of the configuration request. @@ -392,7 +395,8 @@ The server to client flow of the **Complete** request is the same as an **Invent - + +Uniquely identifies the configuration document in which results of the configuration request will be returned. @@ -431,7 +435,8 @@ The server to client flow of the **Complete** request is the same as an **Invent - + +The Document node's value is an XML based document containing a collection of setting results from the configuration request specified by [DocId]. @@ -469,7 +474,8 @@ The server to client flow of the **Complete** request is the same as an **Invent - + +The Inventory internal node indicates that this is an inventory request. The setting values to be retrieved are specified in an XML document through the Document leaf node. @@ -508,7 +514,8 @@ The server to client flow of the **Inventory** request is the same as the **Comp - + +The Documents node indicates that the inventory request is in the form of a document, which is a collection of settings used to retrieve their values. @@ -546,7 +553,8 @@ The server to client flow of the **Inventory** request is the same as the **Comp - + +Uniquely identifies the inventory document. No other document can have this id. The Id should be a GUID. @@ -586,7 +594,8 @@ The server to client flow of the **Inventory** request is the same as the **Comp - + +The Document node's value is an XML based document containing a collection of settings that will be used to retrieve their values. The Declared Configuration stack verifies the syntax of the document, the stack marks the document to be processed asynchronously by the client. The stack then returns control back to the OMA-DM service. The stack, in turn, asynchronously processes the request. Below is an example of a specified desired state configuration using the Declared Configuration URI ./Device/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Documents/27FEA311-68. B9-4320-9. FC4-296. F6FDFAFE2/Document. @@ -624,7 +633,8 @@ The server to client flow of the **Inventory** request is the same as the **Comp - + +The Results node indicates that this is part of the URI path that will return an XML document containing the results of the inventory request. @@ -662,7 +672,8 @@ The server to client flow of the **Inventory** request is the same as the **Comp - + +Uniquely identifies the inventory document. No other document can have this id. The Id should be a GUID. @@ -701,7 +712,8 @@ The server to client flow of the **Inventory** request is the same as the **Comp - + +The Document node's value is an XML based document containing a collection of setting results from the inventory request specified by [DocId]. @@ -723,176 +735,6 @@ The server to client flow of the **Inventory** request is the same as the **Comp - -## ManagementServiceConfiguration - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```Device -./Device/Vendor/MSFT/DeclaredConfiguration/ManagementServiceConfiguration -``` - - - - -Configuration settings for WinDC behavior. - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `node` | -| Access Type | Get | - - - - - - - - - -### ManagementServiceConfiguration/CertificateExpirationThreshold - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```Device -./Device/Vendor/MSFT/DeclaredConfiguration/ManagementServiceConfiguration/CertificateExpirationThreshold -``` - - - - -This node determines the number of minutes as near expiration check for certificate. - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `int` | -| Access Type | Add, Delete, Get, Replace | -| Allowed Values | Range: `[0-4294967295]` | -| Default Value | 2880 | - - - - - - - - - -### ManagementServiceConfiguration/RefreshInterval - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```Device -./Device/Vendor/MSFT/DeclaredConfiguration/ManagementServiceConfiguration/RefreshInterval -``` - - - - -This node determines the number of minutes between refreshes. - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `int` | -| Access Type | Add, Delete, Get, Replace | -| Allowed Values | Range: `[30-4294967295]` | -| Default Value | 240 | - - - - - - - - - -### ManagementServiceConfiguration/StartSyncSessionOnFailure - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | - - - -```Device -./Device/Vendor/MSFT/DeclaredConfiguration/ManagementServiceConfiguration/StartSyncSessionOnFailure -``` - - - - -This node determines whether or not to start a sync session when failed to refresh. - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `bool` | -| Access Type | Add, Delete, Get, Replace | -| Default Value | false | - - - -**Allowed values**: - -| Value | Description | -|:--|:--| -| true | Start a sync session when failed to refresh. | -| false (Default) | Don't start a sync session when failed to refresh. | - - - - - - - - ## Declared configuration OMA URI diff --git a/windows/client-management/mdm/declaredconfiguration-ddf-file.md b/windows/client-management/mdm/declaredconfiguration-ddf-file.md index 3860a6196f..8f17e34ba0 100644 --- a/windows/client-management/mdm/declaredconfiguration-ddf-file.md +++ b/windows/client-management/mdm/declaredconfiguration-ddf-file.md @@ -4,7 +4,7 @@ description: View the XML file containing the device description framework (DDF) author: vinaypamnani-msft manager: aaroncz ms.author: vinpa -ms.date: 09/13/2023 +ms.date: 09/27/2023 ms.localizationpriority: medium ms.prod: windows-client ms.technology: itpro-manage @@ -31,7 +31,7 @@ The following XML file contains the device description framework (DDF) for the D - Insert Description Here + The Declared Configuration CSP (Configuration Service Provider) allows the OMA-DM server to provide the device with the complete collection of setting names and associated values based on a specified scenario. The Declared Configuration stack on the device is responsible for handling the configuration request along with maintaining its state including updates to the scenario. It also provides the means to retrieve a scenario’s settings from the device. The configuration request and settings retrieval request are performed asynchronously, freeing up the server’s worker thread to do other useful work. The subsequent results can be retrieved through Declared Configuration’s result nodes. @@ -58,7 +58,7 @@ The following XML file contains the device description framework (DDF) for the D - Insert Description Here + The Host internal node indicates that the target of the configuration request or inventory request is the host OS. This node is for scope in case enclaves are ever targeted for configuration. @@ -80,7 +80,7 @@ The following XML file contains the device description framework (DDF) for the D - Insert Description Here + This internal node indicates that the configuration has discrete settings values and is self-contained with complete setting and value pairs that do not contain placeholders that the need to be resolved later with additional data. The request is ready to be processed as is. @@ -102,7 +102,7 @@ The following XML file contains the device description framework (DDF) for the D - Insert Description Here + The Documents node indicates that the configuration is in the form of a document, which is a collection of settings used to configure a scenario by the Declared Configuration stack. @@ -125,7 +125,7 @@ The following XML file contains the device description framework (DDF) for the D - Insert Description Here + Uniquely identifies the configuration document. No other document can have this id. The Id should be a GUID. @@ -155,7 +155,7 @@ The following XML file contains the device description framework (DDF) for the D - Insert Description Here + The Document node's value is an XML based document containing a collection of settings and values to configure the specified scenario. The Declared Configuration stack verifies the syntax of the document, the stack marks the document to be processed asynchronously by the client. The stack then returns control back to the OMA-DM service. The stack, in turn, asynchronously processes the request. Below is an example of a specified desired state configuration using the Declared Configuration URI ./Device/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/27FEA311-68B9-4320-9FC4-296F6FDFAFE2/Document @@ -180,7 +180,7 @@ The following XML file contains the device description framework (DDF) for the D - Insert Description Here + The Properties node encapsulates the list of properties that apply to the specified document referenced by [DocID]. @@ -204,7 +204,7 @@ The following XML file contains the device description framework (DDF) for the D 0 - Insert Description Here + The Abandoned node allows the OMA-DM server to indicate that the document is no longer managed. @@ -220,11 +220,11 @@ The following XML file contains the device description framework (DDF) for the D 0 - Insert Description Here + The document is no longer managed. 1 - Insert Description Here + The document is managed.
@@ -238,7 +238,7 @@ The following XML file contains the device description framework (DDF) for the D - Insert Description Here + The Results node indicates that this is part of the URI path that will return an XML document containing the results of the configuration request. @@ -259,7 +259,7 @@ The following XML file contains the device description framework (DDF) for the D - Insert Description Here + Uniquely identifies the configuration document in which results of the configuration request will be returned. @@ -283,7 +283,7 @@ The following XML file contains the device description framework (DDF) for the D - Insert Description Here + The Document node's value is an XML based document containing a collection of setting results from the configuration request specified by [DocId]. @@ -309,7 +309,7 @@ The following XML file contains the device description framework (DDF) for the D - Insert Description Here + The Inventory internal node indicates that this is an inventory request. The setting values to be retrieved are specified in an XML document through the Document leaf node. @@ -331,7 +331,7 @@ The following XML file contains the device description framework (DDF) for the D - Insert Description Here + The Documents node indicates that the inventory request is in the form of a document, which is a collection of settings used to retrieve their values. @@ -354,7 +354,7 @@ The following XML file contains the device description framework (DDF) for the D - Insert Description Here + Uniquely identifies the inventory document. No other document can have this id. The Id should be a GUID. @@ -384,7 +384,7 @@ The following XML file contains the device description framework (DDF) for the D - Insert Description Here + The Document node's value is an XML based document containing a collection of settings that will be used to retrieve their values. The Declared Configuration stack verifies the syntax of the document, the stack marks the document to be processed asynchronously by the client. The stack then returns control back to the OMA-DM service. The stack, in turn, asynchronously processes the request. Below is an example of a specified desired state configuration using the Declared Configuration URI ./Device/Vendor/MSFT/DeclaredConfiguration/Host/Inventory/Documents/27FEA311-68B9-4320-9FC4-296F6FDFAFE2/Document @@ -409,7 +409,7 @@ The following XML file contains the device description framework (DDF) for the D - Insert Description Here + The Results node indicates that this is part of the URI path that will return an XML document containing the results of the inventory request. @@ -430,7 +430,7 @@ The following XML file contains the device description framework (DDF) for the D - Insert Description Here + Uniquely identifies the inventory document. No other document can have this id. The Id should be a GUID. @@ -454,7 +454,7 @@ The following XML file contains the device description framework (DDF) for the D - Insert Description Here + The Document node's value is an XML based document containing a collection of setting results from the inventory request specified by [DocId]. @@ -473,119 +473,6 @@ The following XML file contains the device description framework (DDF) for the D
- - ManagementServiceConfiguration - - - - - Configuration settings for WinDC behavior - - - - - - - - - - - - - - - RefreshInterval - - - - - - - - 240 - This node determines the number of minutes between refreshes. - - - - - - - - - - - - - - [30-4294967295] - - - - - StartSyncSessionOnFailure - - - - - - - - false - This node determines whether or not to start a sync session when failed to refresh. - - - - - - - - - - - - - - - true - Start a sync session when failed to refresh. - - - false - Do not start a sync session when failed to refresh. - - - LastWrite - - - - CertificateExpirationThreshold - - - - - - - - 2880 - This node determines the number of minutes as near expiration check for certificate. - - - - - - - - - - - - - - [0-4294967295] - - - - ``` diff --git a/windows/client-management/mdm/dmclient-csp.md b/windows/client-management/mdm/dmclient-csp.md index 5014503e37..80b8fa7703 100644 --- a/windows/client-management/mdm/dmclient-csp.md +++ b/windows/client-management/mdm/dmclient-csp.md @@ -4,7 +4,7 @@ description: Learn more about the DMClient CSP. author: vinaypamnani-msft manager: aaroncz ms.author: vinpa -ms.date: 08/10/2023 +ms.date: 09/27/2023 ms.localizationpriority: medium ms.prod: windows-client ms.technology: itpro-manage @@ -80,10 +80,10 @@ The following list shows the DMClient configuration service provider nodes: - [HelpWebsite](#deviceproviderprovideridhelpwebsite) - [HWDevID](#deviceproviderprovideridhwdevid) - [LinkedEnrollment](#deviceproviderprovideridlinkedenrollment) + - [DiscoveryEndpoint](#deviceproviderprovideridlinkedenrollmentdiscoveryendpoint) - [Enroll](#deviceproviderprovideridlinkedenrollmentenroll) - [EnrollStatus](#deviceproviderprovideridlinkedenrollmentenrollstatus) - [LastError](#deviceproviderprovideridlinkedenrollmentlasterror) - - [Priority](#deviceproviderprovideridlinkedenrollmentpriority) - [Unenroll](#deviceproviderprovideridlinkedenrollmentunenroll) - [ManagementServerAddressList](#deviceproviderprovideridmanagementserveraddresslist) - [ManagementServerToUpgradeTo](#deviceproviderprovideridmanagementservertoupgradeto) @@ -2411,6 +2411,45 @@ The interior node for linked enrollment. + +##### Device/Provider/{ProviderID}/LinkedEnrollment/DiscoveryEndpoint + + +| Scope | Editions | Applicable OS | +|:--|:--|:--| +| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows Insider Preview | + + + +```Device +./Device/Vendor/MSFT/DMClient/Provider/{ProviderID}/LinkedEnrollment/DiscoveryEndpoint +``` + + + + +Endpoint Discovery is the process where a specific URL (the "discovery endpoint") is accessed, which returns a directory of endpoints for using the system including enrollment. On Get, if the endpoint isn't set, client will return an rmpty string with S_OK. + + + + + + + +**Description framework properties**: + +| Property name | Property value | +|:--|:--| +| Format | `chr` (string) | +| Access Type | Add, Delete, Get, Replace | + + + + + + + + ##### Device/Provider/{ProviderID}/LinkedEnrollment/Enroll @@ -2428,7 +2467,7 @@ The interior node for linked enrollment. -Trigger to enroll for the Linked Enrollment. +This is an execution node and will trigger a silent Declared Configuration unenroll, there is no user interaction needed. On un-enrollment, all the settings/resources set by Declared Configuration will be rolled back (rollback details will be covered later). @@ -2468,7 +2507,7 @@ This is an execution node and will trigger a silent Declared Configuration enrol -Returns the current enrollment or un-enrollment status of the linked enrollment. +Returns the current enrollment or un-enrollment status of the linked enrollment. Supports Get only. @@ -2523,7 +2562,7 @@ Returns the current enrollment or un-enrollment status of the linked enrollment. -return the last error for enroll/unenroll. +Supports Get Only. Returns the HRESULT for the last error when enroll/unenroll fails. @@ -2545,54 +2584,6 @@ return the last error for enroll/unenroll. - -##### Device/Provider/{ProviderID}/LinkedEnrollment/Priority - - -| Scope | Editions | Applicable OS | -|:--|:--|:--| -| ✅ Device
❌ User | ✅ Pro
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise / IoT Enterprise LTSC | ✅ Windows 10, version 2009 [10.0.19042.2193] and later
✅ Windows 10, version 21H1 [10.0.19043.2193] and later
✅ Windows 10, version 21H2 [10.0.19044.2193] and later
✅ Windows 11, version 21H2 [10.0.22000.918] and later
✅ Windows 11, version 22H2 [10.0.22621] and later | - - - -```Device -./Device/Vendor/MSFT/DMClient/Provider/{ProviderID}/LinkedEnrollment/Priority -``` - - - - -Optional. Allowed value is 0 or 1. 0 means the main enrollment has authority for MDM settings and resources, 1 means the linked enrollment has authority. - - - - - - - -**Description framework properties**: - -| Property name | Property value | -|:--|:--| -| Format | `int` | -| Access Type | Add, Delete, Get, Replace | - - - -**Allowed values**: - -| Value | Description | -|:--|:--| -| 0 | The main enrollment has priority over linked enrollment. | -| 1 | The linked enrollment has priority over the main enrollment. | - - - - - - - - ##### Device/Provider/{ProviderID}/LinkedEnrollment/Unenroll diff --git a/windows/client-management/mdm/dmclient-ddf-file.md b/windows/client-management/mdm/dmclient-ddf-file.md index 8940dcd7f9..f47fafa391 100644 --- a/windows/client-management/mdm/dmclient-ddf-file.md +++ b/windows/client-management/mdm/dmclient-ddf-file.md @@ -4,7 +4,7 @@ description: View the XML file containing the device description framework (DDF) author: vinaypamnani-msft manager: aaroncz ms.author: vinpa -ms.date: 06/02/2023 +ms.date: 09/27/2023 ms.localizationpriority: medium ms.prod: windows-client ms.technology: itpro-manage @@ -2548,47 +2548,13 @@ The following XML file contains the device description framework (DDF) for the D 1.6 - - Priority - - - - - - - - Optional. Allowed value is 0 or 1. 0 means the main enrollment has authority for mdm settings and resources, 1 means the linked enrollment has authority. - - - - - - - - - - - - - - - 0 - The main enrollment has priority over linked enrollment. - - - 1 - The linked enrollment has priority over the main enrollment. - - - - LastError - return the last error for enroll/unenroll. + Supports Get Only. Returns the HRESULT for the last error when enroll/unenroll fails. @@ -2609,7 +2575,7 @@ The following XML file contains the device description framework (DDF) for the D - Returns the current enrollment or un-enrollment status of the linked enrollment. + Returns the current enrollment or un-enrollment status of the linked enrollment. Supports Get only. @@ -2668,7 +2634,7 @@ The following XML file contains the device description framework (DDF) for the D - Trigger to enroll for the Linked Enrollment + This is an execution node and will trigger a silent Declared Configuration unenroll, there is no user interaction needed. On un-enrollment, all the settings/resources set by Declared Configuration will be rolled back (rollback details will be covered later). @@ -2704,6 +2670,36 @@ The following XML file contains the device description framework (DDF) for the D + + DiscoveryEndpoint + + + + + + + + Endpoint Discovery is the process where a specific URL (the "discovery endpoint") is accessed, which returns a directory of endpoints for using the system including enrollment. On Get, if the endpoint is not set, client will return an rmpty string with S_OK. + + + + + + + + + + + + + + 99.9.99999 + 9.9 + + + + + MultipleSession From 943ca28bc436b1994536b9697d8901d8c510b29b Mon Sep 17 00:00:00 2001 From: Aaron Czechowski Date: Wed, 27 Sep 2023 16:17:13 -0700 Subject: [PATCH 12/12] remove link --- windows/client-management/declared-configuration.md | 1 - 1 file changed, 1 deletion(-) diff --git a/windows/client-management/declared-configuration.md b/windows/client-management/declared-configuration.md index 9462a0c4f8..f655d1ae19 100644 --- a/windows/client-management/declared-configuration.md +++ b/windows/client-management/declared-configuration.md @@ -21,7 +21,6 @@ The benefit of the declared configuration desired state model is that it's effic [Mobile Device Enrollment Protocol version 2](/openspecs/windows_protocols/ms-mde2/4d7eadd5-3951-4f1c-8159-c39e07cbe692) describes enrollment including discovery, which covers the primary and declared configuration enrollments. The device uses the following new [DMClient CSP](mdm/dmclient-csp.md) policies for declared configuration dual enrollment: -- [LinkedEnrollment/Priority](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentpriority) - [LinkedEnrollment/Enroll](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentenroll) - [LinkedEnrollment/Unenroll](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentunenroll) - [LinkedEnrollment/EnrollStatus](mdm/dmclient-csp.md#deviceproviderprovideridlinkedenrollmentenrollstatus)