AZURE

ValidationError - Validation Error: Business Rule Violation

Your request violates resource-specific business rules—the JSON structure is valid (unlike BadRequest), but values break constraints like uniqueness, dependency validation, or property compatibility rules. This 400 client-side error occurs after ARM validates schema and finds business rule violations. Examples include name uniqueness constraints (globally unique vs scoped), dependency resources missing or in invalid state, or incompatible property combinations (certain SKUs might not be allowed together). ARM validates constraints after schema validation passes. Common in VM creation, AKS cluster configuration, Azure SQL database setup, and App Service deployments.

#Common Causes

  • Uniqueness Constraint Violation: The resource name violates a uniqueness rule. Uniqueness scope varies by resource type—some resources require globally unique names (e.g., storage accounts), while others only need uniqueness within a resource group or subscription.
  • Business Rule Violation: A resource property violates a business rule. Property compatibility rules vary by resource type. Certain SKU combinations might not be allowed, or property values might conflict with each other.
  • Dependency Validation Failure: A referenced resource (dependency) doesn't exist or is in an invalid state. ARM validates that all referenced resources exist and are in a valid state before allowing the operation.

Solutions

  1. 1Step 1: Diagnose - Check resource name uniqueness: az resource list --query "[?name=='<resource-name>'].{id:id, name:name, type:type}" --output table
  2. 2Step 2: Diagnose - Verify resource dependencies exist and are valid: az resource show --ids <dependency-resource-id> --query "{name:name, provisioningState:properties.provisioningState}" --output table
  3. 3Step 3: Diagnose - Validate ARM template to catch constraint violations: az deployment group validate --resource-group <rg> --template-file template.json --parameters @params.json
  4. 4Step 4: Fix - Use a unique name if name conflict exists. For globally unique resources, check across all subscriptions.
  5. 5Step 5: Fix - Fix dependency issues. Ensure all dependencies exist and have provisioningState: "Succeeded".
  6. 6Step 6: Fix - Fix business rule violations based on the error message details. Use compatible properties or valid values.
  7. 7Step 7: Verify - Retry your resource creation operation. It should succeed with HTTP 201 instead of 400 ValidationError.

</>Code Examples

Resource Validation and Dependency Check
1# This script helps diagnose ValidationError by checking uniqueness and dependencies
2
3# Step 1: Example resource name (replace with your actual resource name)
4RESOURCE_NAME="my-resource"
5RESOURCE_TYPE="Microsoft.Compute/virtualMachines"
6echo "Checking resource name uniqueness: $RESOURCE_NAME"
7
8# Step 2: Check if resource with same name exists
9echo "Checking for existing resources with name $RESOURCE_NAME..."
10az resource list \
11  --query "[?name=='$RESOURCE_NAME'].{id:id, name:name, type:type, location:location}" \
12  --output table
13
14# Step 3: Check storage account name availability (globally unique)
15STORAGE_NAME="mystorageaccount"
16echo "Checking storage account name availability: $STORAGE_NAME"
17az storage account check-name --name $STORAGE_NAME --output table
18
19# Step 4: Example dependency resource ID (replace with your actual dependency)
20DEPENDENCY_ID="/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.Network/virtualNetworks/my-vnet"
21echo "Checking dependency: $DEPENDENCY_ID"
22
23# Step 5: Verify dependency exists and is valid
24echo "Checking dependency status..."
25DEPENDENCY_STATE=$(az resource show --ids $DEPENDENCY_ID --query "properties.provisioningState" -o tsv 2>/dev/null)
26if [ ! -z "$DEPENDENCY_STATE" ]; then
27  echo "Dependency provisioning state: $DEPENDENCY_STATE"
28  if [ "$DEPENDENCY_STATE" == "Succeeded" ]; then
29    echo "Dependency is in valid state"
30  else
31    echo "WARNING: Dependency is not in Succeeded state"
32  fi
33else
34  echo "ERROR: Dependency not found"
35fi
36
37# Step 6: Validate ARM template (if using templates)
38TEMPLATE_FILE="template.json"
39PARAMS_FILE="params.json"
40RESOURCE_GROUP="my-resource-group"
41if [ -f "$TEMPLATE_FILE" ] && [ -f "$PARAMS_FILE" ]; then
42  echo "Validating ARM template..."
43  az deployment group validate \
44    --resource-group $RESOURCE_GROUP \
45    --template-file $TEMPLATE_FILE \
46    --parameters @$PARAMS_FILE \
47    --output table
48else
49  echo "Template files not found. Skipping template validation."
50fi
51
52# Step 7: Check for common business rule violations
53echo ""
54echo "Common business rule violations to check:"
55echo "  1. Resource name uniqueness (globally or within scope)"
56echo "  2. SKU compatibility (certain SKUs may not be available together)"
57echo "  3. Property value conflicts (e.g., conflicting network settings)"
58echo "  4. Dependency state (dependencies must be in 'Succeeded' state)"
59echo "  5. Region availability for resource type"
60echo "  6. Subscription limits or constraints"

Related Errors

Provider Information

This error code is specific to AZURE services. For more information, refer to the official AZURE documentation.

ValidationError - Validation Error: Business Rule Violation | AZURE Error Reference | Error Code Reference