/// <summary>
        /// Constructs the resource
        /// </summary>
        private JToken GetResource()
        {
            var policyassignmentObject = new PolicyAssignment
            {
                Name     = this.Name,
                Sku      = Sku?.ToDictionary(addValueLayer: false).ToJson().FromJson <PolicySku>(), // only store Sku if it was provided by user
                Identity = this.AssignIdentity.IsPresent ? new ResourceIdentity {
                    Type = ResourceIdentityType.SystemAssigned
                } : null,
                Location   = this.Location,
                Properties = new PolicyAssignmentProperties
                {
                    DisplayName = this.DisplayName ?? null,
                    Description = this.Description ?? null,
                    Scope       = this.Scope,
                    NotScopes   = this.NotScope ?? null,
                    Metadata    = this.Metadata == null ? null : JObject.Parse(this.GetObjectFromParameter(this.Metadata).ToString()),
                    Parameters  = this.GetParameters()
                }
            };

            if (this.PolicyDefinition != null)
            {
                policyassignmentObject.Properties.PolicyDefinitionId = this.PolicyDefinition.Properties["policyDefinitionId"].Value.ToString();
            }
            else if (this.PolicySetDefinition != null)
            {
                policyassignmentObject.Properties.PolicyDefinitionId = this.PolicySetDefinition.Properties["policySetDefinitionId"].Value.ToString();
            }

            return(policyassignmentObject.ToJToken());
        }
        /// <summary>
        /// Constructs the resource
        /// </summary>
        private JToken GetResource(string resourceId, string apiVersion)
        {
            var resource = this.GetExistingResource(resourceId, apiVersion).Result.ToResource();

            var metaDataJson = string.IsNullOrEmpty(this.Metadata) ? resource.Properties["metadata"]?.ToString() : GetObjectFromParameter(this.Metadata).ToString();

            var policyAssignmentObject = new PolicyAssignment
            {
                Name     = this.Name ?? resource.Name,
                Sku      = Sku?.ToDictionary(addValueLayer: false).ToJson().FromJson <PolicySku>(), // only store Sku if it was provided by user
                Identity = this.AssignIdentity.IsPresent ? new ResourceIdentity {
                    Type = ResourceIdentityType.SystemAssigned
                } : null,
                Location   = this.Location ?? resource.Location,
                Properties = new PolicyAssignmentProperties
                {
                    DisplayName        = this.DisplayName ?? resource.Properties["displayName"]?.ToString(),
                    Description        = this.Description ?? resource.Properties["description"]?.ToString(),
                    Scope              = resource.Properties["scope"].ToString(),
                    NotScopes          = this.NotScope ?? resource.Properties["NotScopes"]?.ToString().Split(','),
                    PolicyDefinitionId = resource.Properties["policyDefinitionId"].ToString(),
                    Metadata           = string.IsNullOrEmpty(this.Metadata) ? null : JObject.Parse(metaDataJson),
                    Parameters         = (JObject)resource.Properties["parameters"]
                }
            };

            return(policyAssignmentObject.ToJToken());
        }