{"record":{"id":"b84ec8b7b76c17cd","repo":"quarkusio/quarkus","slug":"invalid-value-for-appserviceplanresourcegroup-i","errorCode":null,"errorMessage":"Invalid value for <appServicePlanResourceGroup>, it only allow alphanumeric characters, periods, underscores, hyphens and parenthesis and cannot end in a period.","messagePattern":"Invalid value for <appServicePlanResourceGroup>, it only allow alphanumeric characters, periods, underscores, hyphens and parenthesis and cannot end in a period\\.","errorType":"validation","errorClass":"BuildException","httpStatus":null,"severity":"error","filePath":"extensions/azure-functions/deployment/src/main/java/io/quarkus/azure/functions/deployment/AzureFunctionsDeployCommand.java","lineNumber":190,"sourceCode":"        }\n        // resource group\n        if (StringUtils.isBlank(config.resourceGroup())) {\n            throw new BuildException(EMPTY_RESOURCE_GROUP);\n        }\n        if (config.resourceGroup().endsWith(\".\") || !config.resourceGroup().matches(RESOURCE_GROUP_PATTERN)) {\n            throw new BuildException(INVALID_RESOURCE_GROUP_NAME);\n        }\n        // asp name & resource group\n        if (StringUtils.isNotEmpty(config.appServicePlanName())\n                && !config.appServicePlanName().matches(APP_SERVICE_PLAN_NAME_PATTERN)) {\n            throw new BuildException(format(INVALID_SERVICE_PLAN_NAME, APP_SERVICE_PLAN_NAME_PATTERN));\n        }\n        if (config.appServicePlanResourceGroup().isPresent()\n                && StringUtils.isNotEmpty(config.appServicePlanResourceGroup().orElse(null))\n                &&\n                (config.appServicePlanResourceGroup().orElse(null).endsWith(\".\")\n                        || !config.appServicePlanResourceGroup().orElse(null).matches(RESOURCE_GROUP_PATTERN))) {\n            throw new BuildException(INVALID_SERVICE_PLAN_RESOURCE_GROUP_NAME);\n        }\n        // slot name\n        /*\n         * if (deploymentSlotSetting != null && StringUtils.isEmpty(deploymentSlotSetting.getName())) {\n         * throw new BuildException(EMPTY_SLOT_NAME);\n         * }\n         * if (deploymentSlotSetting != null && !deploymentSlotSetting.getName().matches(SLOT_NAME_PATTERN)) {\n         * throw new BuildException(String.format(INVALID_SLOT_NAME, SLOT_NAME_PATTERN));\n         * }\n         *\n         */\n        // region\n        if (StringUtils.isNotEmpty(config.region()) && Region.fromName(config.region()).isExpandedValue()) {\n            log.warn(format(EXPANDABLE_REGION_WARNING, config.region()));\n        }\n        // os\n        if (StringUtils.isNotEmpty(config.runtime().os()) && OperatingSystem.fromString(config.runtime().os()) == null) {\n            throw new BuildException(INVALID_OS);","sourceCodeStart":172,"sourceCodeEnd":208,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/azure-functions/deployment/src/main/java/io/quarkus/azure/functions/deployment/AzureFunctionsDeployCommand.java#L172-L208","documentation":"Raised by AzureFunctionsDeployCommand.validateParameters when the resource group configured for the App Service plan fails its pattern check (illegal characters or a trailing period). This is a separate setting from the function app's own resource group; like it, the App Service plan resource group must contain only alphanumerics, periods, underscores, hyphens and parenthesis and cannot end in a period, and validation aborts the deploy before any Azure client is initialized.","triggerScenarios":"Thrown at extensions/azure-functions/deployment/src/main/java/io/quarkus/azure/functions/deployment/AzureFunctionsDeployCommand.java:190 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fix the App Service plan resource group name to use only permitted characters","Remove any trailing period from the value","Confirm the setting in the azure-functions plugin configuration (appServicePlanResourceGroup) matches an actual Azure resource group"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}