SQL Server Flex BETA – User creation fails with 400 invalid user id during Terraform apply #69

Closed
opened 2026-02-16 11:44:33 +00:00 by sven.schmidt · 0 comments

Description

When creating a stackitprivatepreview_sqlserverflexbeta_user resource via Terraform, the apply fails with a 400 Bad Request error.

Steps to reproduce

/*Copyright 2025 STACKIT GmbH & Co. KG <maintainer.email@stackit.cloud>

Use of this source code is governed by an MIT-style
license that can be found in the LICENSE file or at
https://opensource.org/licenses/MIT.*/

resource "stackitprivatepreview_sqlserverflexbeta_user" "testUser" {
  project_id  = var.tcc_project_id
  instance_id = data.terraform_remote_state.infra_db.outputs.sqlserver_instance_id
  username    = "testuser"
  roles = [
    "##STACKIT_SQLAgentManager##",
    "##STACKIT_SQLAgentUser##",
    "##STACKIT_DatabaseManager##",
    "##STACKIT_LoginManager##",
    "##STACKIT_ProcessManager##",
    "##STACKIT_ServerManager##",
  ]
}


resource "stackitprivatepreview_sqlserverflexbeta_database" "testDB" {
  depends_on  = [stackitprivatepreview_sqlserverflexbeta_user.testUser]
  project_id  = var.tcc_project_id
  instance_id = data.terraform_remote_state.infra_db.outputs.sqlserver_instance_id
  name        = "testdb"
  owner       = stackitprivatepreview_sqlserverflexbeta_user.testUser.username
}

Actual behavior

Please describe the current behavior of the STACKIT Terraform provider. Don't forget to add detailed information like error messages.

Terraform fails during resource creation with the following error:

terraform apply
data.terraform_remote_state.infra_db: Reading...
data.terraform_remote_state.infra_db: Read complete after 0s

Terraform used the selected providers to generate the following execution plan. Resource actions are
indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # stackitprivatepreview_sqlserverflexbeta_database.testDB will be created
  + resource "stackitprivatepreview_sqlserverflexbeta_database" "testDB" {
      + collation           = (known after apply)
      + collation_name      = (known after apply)
      + compatibility       = (known after apply)
      + compatibility_level = (known after apply)
      + database_name       = (known after apply)
      + id                  = (known after apply)
      + instance_id         = "b9b63364-966a-474f-bc34-23b5e571210e"
      + name                = "testdb"
      + owner               = "testuser"
      + project_id          = "5da71386-b8c6-44ba-b030-d20b8400d69e"
      + region              = "eu01"
    }

  # stackitprivatepreview_sqlserverflexbeta_user.testUser will be created
  + resource "stackitprivatepreview_sqlserverflexbeta_user" "testUser" {
      + default_database = (known after apply)
      + host             = (known after apply)
      + id               = (known after apply)
      + instance_id      = "b9b63364-966a-474f-bc34-23b5e571210e"
      + password         = (known after apply)
      + port             = (known after apply)
      + project_id       = "5da71386-b8c6-44ba-b030-d20b8400d69e"
      + region           = "eu01"
      + roles            = [
          + "##STACKIT_SQLAgentManager##",
          + "##STACKIT_SQLAgentUser##",
          + "##STACKIT_DatabaseManager##",
          + "##STACKIT_LoginManager##",
          + "##STACKIT_ProcessManager##",
          + "##STACKIT_ServerManager##",
        ]
      + status           = (known after apply)
      + uri              = (known after apply)
      + user_id          = (known after apply)
      + username         = "testuser"
    }

Plan: 2 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

stackitprivatepreview_sqlserverflexbeta_user.testUser: Creating...
╷
│ Error: Error creating user
│ 
│   with stackitprivatepreview_sqlserverflexbeta_user.testUser,
│   on 02-create-user-db-sql.tf line 7, in resource "stackitprivatepreview_sqlserverflexbeta_user" "testUser":
│    7: resource "stackitprivatepreview_sqlserverflexbeta_user" "testUser" {
│ 
│ Calling API: 400 Bad Request, status code 400, Body: {"code":400,"message":"invalid user
│ id","traceId":"5c8b0a18369a418d0329fa7a0d937f55","type":"BAD_REQUEST_ERROR"}
│ 
│ 
│ Trace ID: "73504a9462defe4c8c3a2d599de59b80"

Expected behavior

The user should be created successfully within the specified SQL Server Flex BETA instance.

If input validation fails, the API should provide a meaningful validation message indicating which field is invalid.

The provider should not trigger a 400 invalid user id error when creating a new user.

## Description When creating a stackitprivatepreview_sqlserverflexbeta_user resource via Terraform, the apply fails with a 400 Bad Request error. ## Steps to reproduce ```terraform /*Copyright 2025 STACKIT GmbH & Co. KG <maintainer.email@stackit.cloud> Use of this source code is governed by an MIT-style license that can be found in the LICENSE file or at https://opensource.org/licenses/MIT.*/ resource "stackitprivatepreview_sqlserverflexbeta_user" "testUser" { project_id = var.tcc_project_id instance_id = data.terraform_remote_state.infra_db.outputs.sqlserver_instance_id username = "testuser" roles = [ "##STACKIT_SQLAgentManager##", "##STACKIT_SQLAgentUser##", "##STACKIT_DatabaseManager##", "##STACKIT_LoginManager##", "##STACKIT_ProcessManager##", "##STACKIT_ServerManager##", ] } resource "stackitprivatepreview_sqlserverflexbeta_database" "testDB" { depends_on = [stackitprivatepreview_sqlserverflexbeta_user.testUser] project_id = var.tcc_project_id instance_id = data.terraform_remote_state.infra_db.outputs.sqlserver_instance_id name = "testdb" owner = stackitprivatepreview_sqlserverflexbeta_user.testUser.username } ``` ## Actual behavior *Please describe the current behavior of the STACKIT Terraform provider. Don't forget to add detailed information like error messages.* Terraform fails during resource creation with the following error: ```bash terraform apply data.terraform_remote_state.infra_db: Reading... data.terraform_remote_state.infra_db: Read complete after 0s Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # stackitprivatepreview_sqlserverflexbeta_database.testDB will be created + resource "stackitprivatepreview_sqlserverflexbeta_database" "testDB" { + collation = (known after apply) + collation_name = (known after apply) + compatibility = (known after apply) + compatibility_level = (known after apply) + database_name = (known after apply) + id = (known after apply) + instance_id = "b9b63364-966a-474f-bc34-23b5e571210e" + name = "testdb" + owner = "testuser" + project_id = "5da71386-b8c6-44ba-b030-d20b8400d69e" + region = "eu01" } # stackitprivatepreview_sqlserverflexbeta_user.testUser will be created + resource "stackitprivatepreview_sqlserverflexbeta_user" "testUser" { + default_database = (known after apply) + host = (known after apply) + id = (known after apply) + instance_id = "b9b63364-966a-474f-bc34-23b5e571210e" + password = (known after apply) + port = (known after apply) + project_id = "5da71386-b8c6-44ba-b030-d20b8400d69e" + region = "eu01" + roles = [ + "##STACKIT_SQLAgentManager##", + "##STACKIT_SQLAgentUser##", + "##STACKIT_DatabaseManager##", + "##STACKIT_LoginManager##", + "##STACKIT_ProcessManager##", + "##STACKIT_ServerManager##", ] + status = (known after apply) + uri = (known after apply) + user_id = (known after apply) + username = "testuser" } Plan: 2 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes stackitprivatepreview_sqlserverflexbeta_user.testUser: Creating... ╷ │ Error: Error creating user │ │ with stackitprivatepreview_sqlserverflexbeta_user.testUser, │ on 02-create-user-db-sql.tf line 7, in resource "stackitprivatepreview_sqlserverflexbeta_user" "testUser": │ 7: resource "stackitprivatepreview_sqlserverflexbeta_user" "testUser" { │ │ Calling API: 400 Bad Request, status code 400, Body: {"code":400,"message":"invalid user │ id","traceId":"5c8b0a18369a418d0329fa7a0d937f55","type":"BAD_REQUEST_ERROR"} │ │ │ Trace ID: "73504a9462defe4c8c3a2d599de59b80" ╵ ``` ## Expected behavior The user should be created successfully within the specified SQL Server Flex BETA instance. If input validation fails, the API should provide a meaningful validation message indicating which field is invalid. The provider should not trigger a 400 invalid user id error when creating a new user.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: stackit-dev-tools/terraform-provider-stackitprivatepreview#69
No description provided.