Hi Team
Yesterday we had to make a change to the skill expression of few SkillGroups.
This change was such that it needed the SkillGroup to be deleted and then recreated.
Ideally, in this situation, the logical sequence of events should be to first delete the existing SkillGroup resource, and then create it as another resource. However, when the PR was applied, terraform tried to "create" the skillgroup first, and then "delete" the existing one.
Clearly, the create request itself failed with below error:
**API Error: 400 - group named [redacted] already exists**
After this, terraform went on to delete the existing Skillgroup successfully a few secs later. This resulted in the skillgroup being deleted successfully, but creation of it failing. Therefore, for about an hour, we had calls queueing up on the associated queues as these skill groups were suddenly not existing anymore.
This incident would have been avoided had terraform deleted the existing SkillGroup first, and then go for creation.
Can you please take a look at possibility of implementing this logic so that such customer impacting incidents do not occur?
Below are extracts of above observation taken from the TF logs showing the timestamps.
Plan to create:
{"@level":"info","@message":"module.skillgroups.genesyscloud_routing_skill_group.agent_groups_with_language_and_one_not_condition[\"redacted\"]: Plan to create","@module":"terraform.ui","@timestamp":"2024-10-23T23:59:14.398818Z","change":{"resource":{"addr":"module.skillgroups.genesyscloud_routing_skill_group.agent_groups_with_language_and_one_not_condition[\"redacted\"]","module":"module.skillgroups","resource":"genesyscloud_routing_skill_group.agent_groups_with_language_and_one_not_condition[\"redacted\"]","implied_provider":"genesyscloud","resource_type":"genesyscloud_routing_skill_group","resource_name":"agent_groups_with_language_and_one_not_condition","resource_key":"redacted"},"action":"create"},"type":"planned_change"}
Plan to delete
{"@level":"info","@message":"module.skillgroups.genesyscloud_routing_skill_group.skillgroups_common[\"redacted\"]: Plan to delete","@module":"terraform.ui","@timestamp":"2024-10-23T23:59:14.399642Z","change":{"resource":{"addr":"module.skillgroups.genesyscloud_routing_skill_group.skillgroups_common[\"redacted\"]","module":"module.skillgroups","resource":"genesyscloud_routing_skill_group.skillgroups_common[\"redacted\"]","implied_provider":"genesyscloud","resource_type":"genesyscloud_routing_skill_group","resource_name":"skillgroups_common","resource_key":"redacted"},"action":"delete","reason":"delete_because_each_key"},"type":"planned_change"}
Creating
{"@level":"info","@message":"module.skillgroups.genesyscloud_routing_skill_group.agent_groups_with_language_and_one_not_condition[\"redacted\"]: Creating...","@module":"terraform.ui","@timestamp":"2024-10-24T00:08:08.468801Z","hook":{"resource":{"addr":"module.skillgroups.genesyscloud_routing_skill_group.agent_groups_with_language_and_one_not_condition[\"redacted\"]","module":"module.skillgroups","resource":"genesyscloud_routing_skill_group.agent_groups_with_language_and_one_not_condition[\"redacted\"]","implied_provider":"genesyscloud","resource_type":"genesyscloud_routing_skill_group","resource_name":"agent_groups_with_language_and_one_not_condition","resource_key":"redacted"},"action":"create"},"type":"apply_start"}
Creation errored
{"@level":"info","@message":"module.skillgroups.genesyscloud_routing_skill_group.agent_groups_with_language_and_one_not_condition[\"redacted\"]: Creation errored after 1s","@module":"terraform.ui","@timestamp":"2024-10-24T00:08:09.297000Z","hook":{"resource":{"addr":"module.skillgroups.genesyscloud_routing_skill_group.agent_groups_with_language_and_one_not_condition[\"redacted\"]","module":"module.skillgroups","resource":"genesyscloud_routing_skill_group.agent_groups_with_language_and_one_not_condition[\"redacted\"]","implied_provider":"genesyscloud","resource_type":"genesyscloud_routing_skill_group","resource_name":"agent_groups_with_language_and_one_not_condition","resource_key":"redacted"},"action":"create","elapsed_seconds":1},"type":"apply_errored"}
Destroying
{"@level":"info","@message":"module.skillgroups.genesyscloud_routing_skill_group.skillgroups_common[\"redacted\"]: Destroying... [id=dd86679f-aac8-4d33-a32b-ecdfe907dc9c]","@module":"terraform.ui","@timestamp":"2024-10-24T00:08:13.885206Z","hook":{"resource":{"addr":"module.skillgroups.genesyscloud_routing_skill_group.skillgroups_common[\"redacted\"]","module":"module.skillgroups","resource":"genesyscloud_routing_skill_group.skillgroups_common[\"redacted\"]","implied_provider":"genesyscloud","resource_type":"genesyscloud_routing_skill_group","resource_name":"skillgroups_common","resource_key":"redacted"},"action":"delete","id_key":"id","id_value":"dd86679f-aac8-4d33-a32b-ecdfe907dc9c"},"type":"apply_start"}
Destruction complete
{"@level":"info","@message":"module.skillgroups.genesyscloud_routing_skill_group.skillgroups_common[\"redacted\"]: Destruction complete after 1s","@module":"terraform.ui","@timestamp":"2024-10-24T00:08:14.755553Z","hook":{"resource":{"addr":"module.skillgroups.genesyscloud_routing_skill_group.skillgroups_common[\"redacted\"]","module":"module.skillgroups","resource":"genesyscloud_routing_skill_group.skillgroups_common[\"redacted\"]","implied_provider":"genesyscloud","resource_type":"genesyscloud_routing_skill_group","resource_name":"skillgroups_common","resource_key":"redacted"},"action":"delete","elapsed_seconds":1},"type":"apply_complete"}