# Terraform Cycle error with aws\_connect\_queue resource

**URL:** <https://discuss.hashicorp.com/t/terraform-cycle-error-with-aws-connect-queue-resource/40220>\
**Category:** Terraform\
**Created:** [May 31, 2022, 1:11pm UTC](https://discuss.hashicorp.com/t/terraform-cycle-error-with-aws-connect-queue-resource/40220 "2022-05-31T13:11:13Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![liamkelly-esure](https://sea2.discourse-cdn.com/hashicorp/user_avatar/discuss.hashicorp.com/liamkelly-esure/32/28487_2.png) [@liamkelly-esure](https://discuss.hashicorp.com/u/liamkelly-esure)\
**Post date:** [May 31, 2022, 1:11pm UTC](https://discuss.hashicorp.com/t/terraform-cycle-error-with-aws-connect-queue-resource/40220/1 "2022-05-31T13:11:13Z")

</div>

Hello,

I’m getting a terraform cycle error for aws\_connect\_queue resources, but the error only happens when uncommenting a quick connect id.

I have the following aws\_connect\_queue resources:

queues.tf

```auto
resource "aws_connect_queue" "cancel-policy-transfers" {
  instance_id = aws_connect_instance.claims_ccp.id
  name = "Cancel Policy Transfers"
  description = "Cancel Policy Transfers"
  hours_of_operation_id = data.aws_connect_hours_of_operation.open_hours.hours_of_operation_id

  quick_connect_ids = [
    aws_connect_quick_connect.mclaims-3rd-party-rep.quick_connect_id,
    aws_connect_quick_connect.mclaims-3rd-party-credithire.quick_connect_id,
    aws_connect_quick_connect.mclaims-clt-complaints.quick_connect_id,
    aws_connect_quick_connect.mclaims-complex.quick_connect_id,
    aws_connect_quick_connect.mclaims-direct-3rd-party.quick_connect_id,
    aws_connect_quick_connect.mclaims-engineering.quick_connect_id,
    aws_connect_quick_connect.mclaims-non-complex.quick_connect_id,
    aws_connect_quick_connect.mclaims-supplier.quick_connect_id,
    aws_connect_quick_connect.motor-uw-transfer-queue.quick_connect_id
  ]

  outbound_caller_config {
    outbound_caller_id_number_id = "b6566c8e-ad51-4358-9eb1-51df4f825d3e"
    outbound_flow_id = data.aws_connect_contact_flow.outbound_whisper_2.contact_flow_id
  }
}

resource "aws_connect_queue" "check-policy-transfers" {
  instance_id = aws_connect_instance.claims_ccp.id
  name = "Check Policy Transfers"
  description = "Check Policy Transfers"
  hours_of_operation_id = data.aws_connect_hours_of_operation.open_hours.hours_of_operation_id

  quick_connect_ids = [
    aws_connect_quick_connect.mclaims-3rd-party-rep.quick_connect_id,
    aws_connect_quick_connect.mclaims-3rd-party-credithire.quick_connect_id,
    aws_connect_quick_connect.mclaims-clt-complaints.quick_connect_id,
    aws_connect_quick_connect.mclaims-complex.quick_connect_id,
    aws_connect_quick_connect.mclaims-direct-3rd-party.quick_connect_id,
    aws_connect_quick_connect.mclaims-engineering.quick_connect_id,
    aws_connect_quick_connect.mclaims-non-complex.quick_connect_id,
    aws_connect_quick_connect.mclaims-supplier.quick_connect_id,
    aws_connect_quick_connect.motor-uw-transfer-queue.quick_connect_id
  ]

  outbound_caller_config {
    outbound_caller_id_number_id = "b6566c8e-ad51-4358-9eb1-51df4f825d3e"
    outbound_flow_id = data.aws_connect_contact_flow.outbound_whisper_2.contact_flow_id
  }
}

resource "aws_connect_queue" "general-transfers" {
  instance_id = aws_connect_instance.claims_ccp.id
  name = "General Transfers"
  description = "General Transfers"
  hours_of_operation_id = data.aws_connect_hours_of_operation.open_hours.hours_of_operation_id

  quick_connect_ids = [
    aws_connect_quick_connect.mclaims-3rd-party-rep.quick_connect_id,
    aws_connect_quick_connect.mclaims-3rd-party-credithire.quick_connect_id,
    aws_connect_quick_connect.mclaims-clt-complaints.quick_connect_id,
    aws_connect_quick_connect.mclaims-complex.quick_connect_id,
    aws_connect_quick_connect.mclaims-direct-3rd-party.quick_connect_id,
    aws_connect_quick_connect.mclaims-engineering.quick_connect_id,
    aws_connect_quick_connect.mclaims-non-complex.quick_connect_id,
    aws_connect_quick_connect.mclaims-supplier.quick_connect_id,
    aws_connect_quick_connect.motor-uw-transfer-queue.quick_connect_id
  ]

  outbound_caller_config {
    outbound_caller_id_number_id = "b6566c8e-ad51-4358-9eb1-51df4f825d3e"
    outbound_flow_id = data.aws_connect_contact_flow.outbound_whisper_2.contact_flow_id
  }
}

resource "aws_connect_queue" "update-policy-transfers" {
  instance_id = aws_connect_instance.claims_ccp.id
  name = "Update Policy Transfers"
  description = "Update Policy Transfers"
  hours_of_operation_id = data.aws_connect_hours_of_operation.open_hours.hours_of_operation_id

  quick_connect_ids = [
    aws_connect_quick_connect.check-policy-transfer-queue.quick_connect_id,
    aws_connect_quick_connect.cancel-policy-transfer-queue.quick_connect_id,
    aws_connect_quick_connect.general-transfer-queue.quick_connect_id,
    aws_connect_quick_connect.mclaims-3rd-party-rep.quick_connect_id,
    aws_connect_quick_connect.mclaims-3rd-party-credithire.quick_connect_id,
    aws_connect_quick_connect.mclaims-clt-complaints.quick_connect_id,
    aws_connect_quick_connect.mclaims-complex.quick_connect_id,
    aws_connect_quick_connect.mclaims-direct-3rd-party.quick_connect_id,
    aws_connect_quick_connect.mclaims-engineering.quick_connect_id,
    aws_connect_quick_connect.mclaims-non-complex.quick_connect_id,
    aws_connect_quick_connect.mclaims-supplier.quick_connect_id,
    aws_connect_quick_connect.motor-uw-transfer-queue.quick_connect_id
  ]

  outbound_caller_config {
    outbound_caller_id_number_id = "b6566c8e-ad51-4358-9eb1-51df4f825d3e"
    outbound_flow_id = data.aws_connect_contact_flow.outbound_whisper.contact_flow_id
  }
}

resource "aws_connect_queue" "motor-uw" {
  instance_id = aws_connect_instance.claims_ccp.id
  name = "Motor UW"
  description = "Esure Motor UW Queue"
  hours_of_operation_id = data.aws_connect_hours_of_operation.open_hours.hours_of_operation_id

  quick_connect_ids = [
    aws_connect_quick_connect.check-policy-transfer-queue.quick_connect_id,
    aws_connect_quick_connect.update-policy-transfer-queue.quick_connect_id,
    aws_connect_quick_connect.cancel-policy-transfer-queue.quick_connect_id,
    aws_connect_quick_connect.general-transfer-queue.quick_connect_id,
    aws_connect_quick_connect.mclaims-3rd-party-rep.quick_connect_id,
    aws_connect_quick_connect.mclaims-3rd-party-credithire.quick_connect_id,
    aws_connect_quick_connect.mclaims-clt-complaints.quick_connect_id,
    aws_connect_quick_connect.mclaims-complex.quick_connect_id,
    aws_connect_quick_connect.mclaims-direct-3rd-party.quick_connect_id,
    aws_connect_quick_connect.mclaims-engineering.quick_connect_id,
    aws_connect_quick_connect.mclaims-non-complex.quick_connect_id,
    aws_connect_quick_connect.mclaims-supplier.quick_connect_id,
    aws_connect_quick_connect.motor-uw-transfer-queue.quick_connect_id
  ]

  outbound_caller_config {
    outbound_caller_id_number_id = "b6566c8e-ad51-4358-9eb1-51df4f825d3e"
    outbound_flow_id = data.aws_connect_contact_flow.outbound_whisper.contact_flow_id
  }
}

resource "aws_connect_queue" "motor-uw-transfers" {
  instance_id = aws_connect_instance.claims_ccp.id
  name = "Motor UW Transfers"
  description = "Internal transfers for Motor UW"
  hours_of_operation_id = data.aws_connect_hours_of_operation.open_hours.hours_of_operation_id

  quick_connect_ids = [
    #aws_connect_quick_connect.check-policy-transfer-queue.quick_connect_id,
    #aws_connect_quick_connect.update-policy-transfer-queue.quick_connect_id,
    #aws_connect_quick_connect.cancel-policy-transfer-queue.quick_connect_id,
    #aws_connect_quick_connect.general-transfer-queue.quick_connect_id,
    aws_connect_quick_connect.mclaims-3rd-party-rep.quick_connect_id,
    aws_connect_quick_connect.mclaims-3rd-party-credithire.quick_connect_id,
    aws_connect_quick_connect.mclaims-clt-complaints.quick_connect_id,
    aws_connect_quick_connect.mclaims-complex.quick_connect_id,
    aws_connect_quick_connect.mclaims-direct-3rd-party.quick_connect_id,
    aws_connect_quick_connect.mclaims-engineering.quick_connect_id,
    aws_connect_quick_connect.mclaims-non-complex.quick_connect_id,
    aws_connect_quick_connect.mclaims-supplier.quick_connect_id,
    #aws_connect_quick_connect.motor-uw-transfer-queue.quick_connect_id
  ]

  outbound_caller_config {
    outbound_caller_id_number_id = "b6566c8e-ad51-4358-9eb1-51df4f825d3e"
    outbound_flow_id = data.aws_connect_contact_flow.outbound_whisper.contact_flow_id
  }
}

```

with the above, TF runs fine without any issues

quick-connect.tf

```auto
resource "aws_connect_quick_connect" "check-policy-transfer-queue" {
  instance_id = aws_connect_instance.claims_ccp.id
  name = "Check Policy TX Q"

  quick_connect_config {
    quick_connect_type = "QUEUE"

    queue_config {
      queue_id = aws_connect_queue.check-policy-transfers.queue_id
      contact_flow_id = "01a6a3ae-e091-4459-bd83-1a2e89c7fc92"
    }
  }
}

resource "aws_connect_quick_connect" "update-policy-transfer-queue" {
  instance_id = aws_connect_instance.claims_ccp.id
  name = "Update Policy TX Q"

  quick_connect_config {
    quick_connect_type = "QUEUE"

    queue_config {
      queue_id = aws_connect_queue.update-policy-transfers.queue_id
      contact_flow_id = "01a6a3ae-e091-4459-bd83-1a2e89c7fc92"
    }
  }
}

resource "aws_connect_quick_connect" "general-transfer-queue" {
  instance_id = aws_connect_instance.claims_ccp.id
  name = "General TX Q"

  quick_connect_config {
    quick_connect_type = "QUEUE"

    queue_config {
      queue_id = aws_connect_queue.general-transfers.queue_id
      contact_flow_id = "01a6a3ae-e091-4459-bd83-1a2e89c7fc92"
    }
  }
}

resource "aws_connect_quick_connect" "claims-transfer-queue" {
  instance_id = aws_connect_instance.claims_ccp.id
  name = "Claims Transfer Queue"

  quick_connect_config {
    quick_connect_type = "QUEUE"

    queue_config {
      queue_id = aws_connect_queue.claims-transfers.queue_id
      contact_flow_id = "01a6a3ae-e091-4459-bd83-1a2e89c7fc92"
    }
  }
}

resource "aws_connect_quick_connect" "cancel-policy-transfer-queue" {
  instance_id = aws_connect_instance.claims_ccp.id
  name = "Cancel Policy TX Q"

  quick_connect_config {
    quick_connect_type = "QUEUE"

    queue_config {
      queue_id = aws_connect_queue.cancel-policy-transfers.queue_id
      contact_flow_id = "01a6a3ae-e091-4459-bd83-1a2e89c7fc92"
    }
  }
}

resource "aws_connect_quick_connect" "motor-uw-transfer-queue" {
  instance_id = aws_connect_instance.claims_ccp.id
  name = "Motor UW TX Q"

  quick_connect_config {
    quick_connect_type = "QUEUE"

    queue_config {
      queue_id = aws_connect_queue.motor-uw-transfers.queue_id
      contact_flow_id = "01a6a3ae-e091-4459-bd83-1a2e89c7fc92"
    }
  }
}

```

The minute I un-comment one of the quick connect ids in the motor-uw-transfers resource like below:

```auto
resource "aws_connect_queue" "motor-uw-transfers" {
  instance_id = aws_connect_instance.claims_ccp.id
  name = "Motor UW Transfers"
  description = "Internal transfers for Motor UW"
  hours_of_operation_id = data.aws_connect_hours_of_operation.open_hours.hours_of_operation_id

  quick_connect_ids = [
    aws_connect_quick_connect.check-policy-transfer-queue.quick_connect_id,
    #aws_connect_quick_connect.update-policy-transfer-queue.quick_connect_id,
    #aws_connect_quick_connect.cancel-policy-transfer-queue.quick_connect_id,
    #aws_connect_quick_connect.general-transfer-queue.quick_connect_id,
    aws_connect_quick_connect.mclaims-3rd-party-rep.quick_connect_id,
    aws_connect_quick_connect.mclaims-3rd-party-credithire.quick_connect_id,
    aws_connect_quick_connect.mclaims-clt-complaints.quick_connect_id,
    aws_connect_quick_connect.mclaims-complex.quick_connect_id,
    aws_connect_quick_connect.mclaims-direct-3rd-party.quick_connect_id,
    aws_connect_quick_connect.mclaims-engineering.quick_connect_id,
    aws_connect_quick_connect.mclaims-non-complex.quick_connect_id,
    aws_connect_quick_connect.mclaims-supplier.quick_connect_id,
    #aws_connect_quick_connect.motor-uw-transfer-queue.quick_connect_id
  ]

  outbound_caller_config {
    outbound_caller_id_number_id = "b6566c8e-ad51-4358-9eb1-51df4f825d3e"
    outbound_flow_id = data.aws_connect_contact_flow.outbound_whisper.contact_flow_id
  }
}

```

I receive the following error:

```auto
Error: Cycle: aws_connect_quick_connect.check-policy-transfer-queue,
aws_connect_queue.motor-uw-transfers,
aws_connect_quick_connect.motor-uw-transfer-queue,
aws_connect_queue.check-policy-transfers

```

Any help or guidance will be greatly appreciated, i’m aware that the cycle error is around dependencies between the resource, but I can’t see/understand why it is happening, as earlier resources have the same quick connect ids and terraform runs fine.

---

<div class="post-metadata">

**Author:** ![jbardin](https://sea2.discourse-cdn.com/hashicorp/user_avatar/discuss.hashicorp.com/jbardin/32/3325_2.png) [@jbardin](https://discuss.hashicorp.com/u/jbardin)\
**Post date:** [May 31, 2022, 5:38pm UTC](https://discuss.hashicorp.com/t/terraform-cycle-error-with-aws-connect-queue-resource/40220/2 "2022-05-31T17:38:35Z")

</div>

Hi @liamkelly-esure,

I’m not familiar with the AWS resources being used here, so I can’t offer much advice on how to structure the config, but maybe an explanation of the cycle might help you solve the problem.

The cycle error presented is showing you which resources are participating in the cycle, and in which order. If you start from any of the listed resources, you will see in your config that there is a reference to the previous resource in the cycle.

Basically `check-policy-transfer-queue` references `check-policy-transfers`, which references `motor-uw-transfer-queue`, and that finally references `motor-uw-transfers`. When you uncomment the `check-policy-transfer-queue` line in `motor-uw-transfers` you create a cycle and Terraform cannot determine in which order the resources must be evaluated.

---

<div class="post-metadata">

**Author:** ![liamkelly-esure](https://sea2.discourse-cdn.com/hashicorp/user_avatar/discuss.hashicorp.com/liamkelly-esure/32/28487_2.png) [@liamkelly-esure](https://discuss.hashicorp.com/u/liamkelly-esure)\
**Post date:** [June 1, 2022, 10:09am UTC](https://discuss.hashicorp.com/t/terraform-cycle-error-with-aws-connect-queue-resource/40220/3 "2022-06-01T10:09:52Z")

</div>

Many thanks for your reply, comparing with our dev environment (where this was done manually by the devs) they don’t quite match up, so will adjust them and see how the response is.

---

<div class="post-metadata">

**Author:** ![liamkelly-esure](https://sea2.discourse-cdn.com/hashicorp/user_avatar/discuss.hashicorp.com/liamkelly-esure/32/28487_2.png) [@liamkelly-esure](https://discuss.hashicorp.com/u/liamkelly-esure)\
**Post date:** [June 1, 2022, 11:23am UTC](https://discuss.hashicorp.com/t/terraform-cycle-error-with-aws-connect-queue-resource/40220/4 "2022-06-01T11:23:39Z")

</div>

I can’t see a way around this, i understand why the error is happening as you’ve explained, but can’t see what I can change to get around this.

---

<div class="post-metadata">

**Author:** ![liamkelly-esure](https://sea2.discourse-cdn.com/hashicorp/user_avatar/discuss.hashicorp.com/liamkelly-esure/32/28487_2.png) [@liamkelly-esure](https://discuss.hashicorp.com/u/liamkelly-esure)\
**Post date:** [June 1, 2022, 11:53am UTC](https://discuss.hashicorp.com/t/terraform-cycle-error-with-aws-connect-queue-resource/40220/5 "2022-06-01T11:53:31Z")

</div>

Managed to resolve the issue with the following for quick connects

```auto
data "aws_connect_queue" "motor-uw-transfer" {
  instance_id = aws_connect_instance.claims_ccp.id
  queue_id = "3bda4379-6505-43a5-8bb4-c4f0441f2083"
}

resource "aws_connect_quick_connect" "motor-uw-transfer-quick-connect" {
  instance_id = aws_connect_instance.claims_ccp.id
  name = "Motor UW TX Q"

  quick_connect_config {
    quick_connect_type = "QUEUE"

    queue_config {
      queue_id = data.aws_connect_queue.motor-uw-transfer.queue_id
      contact_flow_id = "01a6a3ae-e091-4459-bd83-1a2e89c7fc92"
    }
  }
}

data "aws_connect_queue" "check-policy-transfer" {
  instance_id = aws_connect_instance.claims_ccp.id
  queue_id = "dfd9f14c-2ca1-46c7-94f3-cb9da3862f69"
}

resource "aws_connect_quick_connect" "check-policy-transfer-quick-connect" {
  instance_id = aws_connect_instance.claims_ccp.id
  name = "Check Policy TX Q"

  quick_connect_config {
    quick_connect_type = "QUEUE"

    queue_config {
      queue_id = data.aws_connect_queue.check-policy-transfer.queue_id
      contact_flow_id = "01a6a3ae-e091-4459-bd83-1a2e89c7fc92"
    }
  }
}

```

Which is a shame, because the queue id’s have to be hardcoded, though terraform can’t delete queues, potentially if the id changes then that could be a pain.
