Repository: RasaHQ/rasa
Pull request: move training data version from 2.0 to 3.0
Closes #10150

I updated `LATEST_TRAINING_DATA_FORMAT_VERSION` to 3.0 and then followed the following process to update test/example training data...

`grep -r "version: \"2.0\""` to get list of files and then manually replaced {FILE_NAME} with each file to make sure they were good to update and avoid `sed` reformatting errors on files without newlines that I don't think should be changed: `find {FILE_NAME} -type f -exec sed -i '' 's/version: \"2.0\"/version: \"3.0\"/g' {} \;`

Problem statement:
Add version for training data for Version 3
### Rasa Open Source version

3.0.0rc1

### Rasa SDK version

_No response_

### Rasa X version

_No response_

### Python version

3.8

### What operating system are you using?

OSX

### What happened?

There have been changes in config file structure but the version still says "v2". This is for domain.yml but also for files in `data/*`

### Command / Request

_No response_

### Relevant log output

_No response_

Hints from issue discussion:

Commit message: Update docs/docs/migration-guide.mdx

Patch to review:
diff --git a/changelog/10150.feature.md b/changelog/10150.feature.md
new file mode 100644
index 000000000000..254b8a48de3a
--- /dev/null
+++ b/changelog/10150.feature.md
@@ -0,0 +1 @@
+Training data version upgraded from `2.0` to `3.0` due to breaking changes to format in Rasa Open Source 3.0
diff --git a/data/examples/rasa/demo-rasa-multi-intent.yml b/data/examples/rasa/demo-rasa-multi-intent.yml
index d17e9cd2a5a3..f2484a462f40 100644
--- a/data/examples/rasa/demo-rasa-multi-intent.yml
+++ b/data/examples/rasa/demo-rasa-multi-intent.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: affirm
   examples: |
diff --git a/data/examples/rasa/demo-rasa.yml b/data/examples/rasa/demo-rasa.yml
index a205426497ce..ebefb6a2d38e 100644
--- a/data/examples/rasa/demo-rasa.yml
+++ b/data/examples/rasa/demo-rasa.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: affirm
   examples: |
diff --git a/data/test/demo-rasa-composite-entities.yml b/data/test/demo-rasa-composite-entities.yml
index 3993cafae9fd..fe2e39a471ef 100644
--- a/data/test/demo-rasa-composite-entities.yml
+++ b/data/test/demo-rasa-composite-entities.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: affirm
   examples: |
diff --git a/data/test/demo-rasa-more-ents-and-multiplied.yml b/data/test/demo-rasa-more-ents-and-multiplied.yml
index 1ec793159803..d1cc96d6943f 100644
--- a/data/test/demo-rasa-more-ents-and-multiplied.yml
+++ b/data/test/demo-rasa-more-ents-and-multiplied.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: affirm
   examples: |
diff --git a/data/test/demo-rasa-no-ents.yml b/data/test/demo-rasa-no-ents.yml
index d35f3c4a42ea..b5817fad5b70 100644
--- a/data/test/demo-rasa-no-ents.yml
+++ b/data/test/demo-rasa-no-ents.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: affirm
   examples: |
diff --git a/data/test/duplicate_intents_yaml/demo-rasa-intents-1.yml b/data/test/duplicate_intents_yaml/demo-rasa-intents-1.yml
index 8a7619ef83e5..bec0119720a0 100644
--- a/data/test/duplicate_intents_yaml/demo-rasa-intents-1.yml
+++ b/data/test/duplicate_intents_yaml/demo-rasa-intents-1.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: affirm
   examples: |
diff --git a/data/test/duplicate_intents_yaml/demo-rasa-intents-2.yml b/data/test/duplicate_intents_yaml/demo-rasa-intents-2.yml
index 725f283dc4da..c185a0f0a432 100644
--- a/data/test/duplicate_intents_yaml/demo-rasa-intents-2.yml
+++ b/data/test/duplicate_intents_yaml/demo-rasa-intents-2.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: affirm
   examples: |
diff --git a/data/test/duplicate_intents_yaml/demo-rasa-intents-3.yml b/data/test/duplicate_intents_yaml/demo-rasa-intents-3.yml
index dae5baec42c2..6918e2aa4a40 100644
--- a/data/test/duplicate_intents_yaml/demo-rasa-intents-3.yml
+++ b/data/test/duplicate_intents_yaml/demo-rasa-intents-3.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: affirm
   examples: |
diff --git a/data/test/incorrect_nlu_format.yml b/data/test/incorrect_nlu_format.yml
index 00a518b776f8..29bfcadda3ab 100644
--- a/data/test/incorrect_nlu_format.yml
+++ b/data/test/incorrect_nlu_format.yml
@@ -1,2 +1,2 @@
-version: "2.0"
-nlu:
\ No newline at end of file
+version: "3.0"
+nlu:
diff --git a/data/test/lookup_tables/lookup_table.yml b/data/test/lookup_tables/lookup_table.yml
index ee549edac6af..ad256c6fbd08 100644
--- a/data/test/lookup_tables/lookup_table.yml
+++ b/data/test/lookup_tables/lookup_table.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: restaurant_search
   examples: |
diff --git a/data/test/many_intents.yml b/data/test/many_intents.yml
index 81cf4f51417b..3881d66f3a37 100644
--- a/data/test/many_intents.yml
+++ b/data/test/many_intents.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: handleinsult
   examples: |
diff --git a/data/test/overlapping_regex_entities.yml b/data/test/overlapping_regex_entities.yml
index 601adb0dc5e3..cc67b7dace3f 100644
--- a/data/test/overlapping_regex_entities.yml
+++ b/data/test/overlapping_regex_entities.yml
@@ -1,5 +1,5 @@
 
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: restaurant_search
   examples: |
diff --git a/data/test/stories_default_retrieval_intents.yml b/data/test/stories_default_retrieval_intents.yml
index b56c6bbae6bd..20d714d087c5 100644
--- a/data/test/stories_default_retrieval_intents.yml
+++ b/data/test/stories_default_retrieval_intents.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: greet
   examples: |
diff --git a/data/test/synonyms_only.yml b/data/test/synonyms_only.yml
index 0491262fabc9..c3fb0562d400 100644
--- a/data/test/synonyms_only.yml
+++ b/data/test/synonyms_only.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - synonym: chinese
   examples: |
diff --git a/data/test_domains/conditional_response_variations.yml b/data/test_domains/conditional_response_variations.yml
index e0718b5a03a6..b67dd9d313d3 100644
--- a/data/test_domains/conditional_response_variations.yml
+++ b/data/test_domains/conditional_response_variations.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 intents:
   - greet
diff --git a/data/test_domains/test_domain_from_directory1/domain_invalid.yml b/data/test_domains/test_domain_from_directory1/domain_invalid.yml
index 589ba9aa24d6..31eabcc4ea1c 100644
--- a/data/test_domains/test_domain_from_directory1/domain_invalid.yml
+++ b/data/test_domains/test_domain_from_directory1/domain_invalid.yml
@@ -1,4 +1,4 @@
 # invalid yml file should create warning
 # contains duplicate key
-version: "2.0"
-version: "2.0"
+version: "3.0"
+version: "3.0"
diff --git a/data/test_domains/test_domain_from_directory1/domain_valid.yml b/data/test_domains/test_domain_from_directory1/domain_valid.yml
index c404279eec13..b98452cd0dce 100644
--- a/data/test_domains/test_domain_from_directory1/domain_valid.yml
+++ b/data/test_domains/test_domain_from_directory1/domain_valid.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 intents:
   - greet
   - default
diff --git a/data/test_e2ebot/data/nlu.yml b/data/test_e2ebot/data/nlu.yml
index d103dbff098c..fd04fed1fbc8 100644
--- a/data/test_e2ebot/data/nlu.yml
+++ b/data/test_e2ebot/data/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 nlu:
 - intent: tell_name
diff --git a/data/test_e2ebot/data/stories.yml b/data/test_e2ebot/data/stories.yml
index adcc69cc686e..7826791ccd09 100644
--- a/data/test_e2ebot/data/stories.yml
+++ b/data/test_e2ebot/data/stories.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 stories:
 - story: Tell name and mood
diff --git a/data/test_e2ebot/domain.yml b/data/test_e2ebot/domain.yml
index 0208aeb1354e..447a0063a7f2 100644
--- a/data/test_e2ebot/domain.yml
+++ b/data/test_e2ebot/domain.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 intents:
  - tell_name
diff --git a/data/test_e2ebot/tests/test_stories.yml b/data/test_e2ebot/tests/test_stories.yml
index 1ad4f09922e3..fc793c1d0ade 100644
--- a/data/test_e2ebot/tests/test_stories.yml
+++ b/data/test_e2ebot/tests/test_stories.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 stories:
 - story: Test with two easy entities
diff --git a/data/test_e2ebot/tests/test_stories_with_unknown_bot_utterances.yml b/data/test_e2ebot/tests/test_stories_with_unknown_bot_utterances.yml
index 051da364dc48..312fbf415e19 100644
--- a/data/test_e2ebot/tests/test_stories_with_unknown_bot_utterances.yml
+++ b/data/test_e2ebot/tests/test_stories_with_unknown_bot_utterances.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 stories:
 - story: Test with two easy entities
diff --git a/data/test_evaluations/test_form_end_to_end_stories.yml b/data/test_evaluations/test_form_end_to_end_stories.yml
index 9309e7bbeca0..b413b6324325 100644
--- a/data/test_evaluations/test_form_end_to_end_stories.yml
+++ b/data/test_evaluations/test_form_end_to_end_stories.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 stories:
   - story: stop form + continue
     steps:
diff --git a/data/test_incremental_training/iter1/nlg_training_data.yml b/data/test_incremental_training/iter1/nlg_training_data.yml
index 554894ff2498..85312a08232a 100644
--- a/data/test_incremental_training/iter1/nlg_training_data.yml
+++ b/data/test_incremental_training/iter1/nlg_training_data.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 responses:
   utter_mood/great:
   - text: some response to mood/great
diff --git a/data/test_incremental_training/iter1/training_data.yml b/data/test_incremental_training/iter1/training_data.yml
index c92d348b1ece..f49d61e7ca11 100644
--- a/data/test_incremental_training/iter1/training_data.yml
+++ b/data/test_incremental_training/iter1/training_data.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: bot_challenge
   examples: |
diff --git a/data/test_incremental_training/iter2/training_data.yml b/data/test_incremental_training/iter2/training_data.yml
index 992147ce9724..06643168f293 100644
--- a/data/test_incremental_training/iter2/training_data.yml
+++ b/data/test_incremental_training/iter2/training_data.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: affirm
   examples: |
@@ -10,4 +10,4 @@ nlu:
     - I feel lonely
 - regex: zipcode
   examples: |
-    - [0-9]{5}
\ No newline at end of file
+    - [0-9]{5}
diff --git a/data/test_mixed_yaml_training_data/training_data.yml b/data/test_mixed_yaml_training_data/training_data.yml
index 572932bc3954..ed5215a0775f 100644
--- a/data/test_mixed_yaml_training_data/training_data.yml
+++ b/data/test_mixed_yaml_training_data/training_data.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: intent_name
   examples: |
diff --git a/data/test_moodbot/data/nlu.yml b/data/test_moodbot/data/nlu.yml
index c98b09f01773..08b8c8ba98ea 100644
--- a/data/test_moodbot/data/nlu.yml
+++ b/data/test_moodbot/data/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: greet
   examples: |
diff --git a/data/test_moodbot/data/rules.yml b/data/test_moodbot/data/rules.yml
index ba0abecb03bc..8a2bc190c03c 100644
--- a/data/test_moodbot/data/rules.yml
+++ b/data/test_moodbot/data/rules.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 rules:
 - rule: Say goodbye anytime the user says goodbye
   steps:
diff --git a/data/test_moodbot/data/stories.yml b/data/test_moodbot/data/stories.yml
index 3a860c7a978e..34e9dc763543 100644
--- a/data/test_moodbot/data/stories.yml
+++ b/data/test_moodbot/data/stories.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 stories:
 - story: happy path
   steps:
diff --git a/data/test_moodbot/domain.yml b/data/test_moodbot/domain.yml
index 815185cbccd3..ae32962f2667 100644
--- a/data/test_moodbot/domain.yml
+++ b/data/test_moodbot/domain.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 intents:
   - greet
diff --git a/data/test_multi_domain/data/GreetBot/data/nlu.yml b/data/test_multi_domain/data/GreetBot/data/nlu.yml
index 9b32a7da5d11..3135e2ab4e55 100644
--- a/data/test_multi_domain/data/GreetBot/data/nlu.yml
+++ b/data/test_multi_domain/data/GreetBot/data/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: greet
   examples: |
diff --git a/data/test_multi_domain/data/GreetBot/data/stories.yml b/data/test_multi_domain/data/GreetBot/data/stories.yml
index b8e12e1ba76f..8bea5299c21c 100644
--- a/data/test_multi_domain/data/GreetBot/data/stories.yml
+++ b/data/test_multi_domain/data/GreetBot/data/stories.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 stories:
 - story: say hello
   steps:
diff --git a/data/test_multi_domain/data/MoodBot/data/nlu.yml b/data/test_multi_domain/data/MoodBot/data/nlu.yml
index 23f6ee1291ad..85f7f0ee1fb8 100644
--- a/data/test_multi_domain/data/MoodBot/data/nlu.yml
+++ b/data/test_multi_domain/data/MoodBot/data/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: affirm
   examples: |
diff --git a/data/test_multi_domain/data/MoodBot/data/stories.yml b/data/test_multi_domain/data/MoodBot/data/stories.yml
index 3a860c7a978e..34e9dc763543 100644
--- a/data/test_multi_domain/data/MoodBot/data/stories.yml
+++ b/data/test_multi_domain/data/MoodBot/data/stories.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 stories:
 - story: happy path
   steps:
diff --git a/data/test_multi_domain/data/nlu.yml b/data/test_multi_domain/data/nlu.yml
index 78d327371306..7313407c31a5 100644
--- a/data/test_multi_domain/data/nlu.yml
+++ b/data/test_multi_domain/data/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: goodbye
   examples: |
diff --git a/data/test_multi_domain/data/stories.yml b/data/test_multi_domain/data/stories.yml
index b228e5124105..806a3a551e5e 100644
--- a/data/test_multi_domain/data/stories.yml
+++ b/data/test_multi_domain/data/stories.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 stories:
 - story: say goodbye
   steps:
diff --git a/data/test_multiline_intent_examples_yaml/nlu.yml b/data/test_multiline_intent_examples_yaml/nlu.yml
index b28b1c47b734..0ef54a90b027 100644
--- a/data/test_multiline_intent_examples_yaml/nlu.yml
+++ b/data/test_multiline_intent_examples_yaml/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: greet
   examples:
diff --git a/data/test_multiproject/projects/ChitchatBot/data/nlu.yml b/data/test_multiproject/projects/ChitchatBot/data/nlu.yml
index f1589539bbc2..94b88fa3bf33 100644
--- a/data/test_multiproject/projects/ChitchatBot/data/nlu.yml
+++ b/data/test_multiproject/projects/ChitchatBot/data/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: bot_challenge
   examples: |
diff --git a/data/test_multiproject/projects/ChitchatBot/data/rules.yml b/data/test_multiproject/projects/ChitchatBot/data/rules.yml
index ef40f1c59a8a..f8405727e527 100644
--- a/data/test_multiproject/projects/ChitchatBot/data/rules.yml
+++ b/data/test_multiproject/projects/ChitchatBot/data/rules.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 rules:
 - rule: Tell a joke when the user asks for one
   steps:
@@ -8,4 +8,4 @@ rules:
 - rule: Say 'I am a bot' anytime the user challenges
   steps:
   - intent: bot_challenge
-  - action: utter_iamabot
\ No newline at end of file
+  - action: utter_iamabot
diff --git a/data/test_multiproject/projects/ChitchatBot/domain.yml b/data/test_multiproject/projects/ChitchatBot/domain.yml
index 4c6e80db6717..85406349742f 100644
--- a/data/test_multiproject/projects/ChitchatBot/domain.yml
+++ b/data/test_multiproject/projects/ChitchatBot/domain.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 intents:
   - tell_joke
diff --git a/data/test_multiproject/projects/GreetBot/data/nlu.yml b/data/test_multiproject/projects/GreetBot/data/nlu.yml
index 2b1bad2c909e..975d7ebc1493 100644
--- a/data/test_multiproject/projects/GreetBot/data/nlu.yml
+++ b/data/test_multiproject/projects/GreetBot/data/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: greet
   examples: |
diff --git a/data/test_multiproject/projects/GreetBot/data/rules.yml b/data/test_multiproject/projects/GreetBot/data/rules.yml
index 63ff41e061f2..c7d7600f3370 100644
--- a/data/test_multiproject/projects/GreetBot/data/rules.yml
+++ b/data/test_multiproject/projects/GreetBot/data/rules.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 rules:
 - rule: respond to greeting
   steps:
@@ -8,4 +8,4 @@ rules:
 - rule: respond to goodbye
   steps:
   - intent: goodbye
-  - action: utter_goodbye
\ No newline at end of file
+  - action: utter_goodbye
diff --git a/data/test_multiproject/projects/GreetBot/domain.yml b/data/test_multiproject/projects/GreetBot/domain.yml
index 31d7c34fd06a..4b37eb0e1415 100644
--- a/data/test_multiproject/projects/GreetBot/domain.yml
+++ b/data/test_multiproject/projects/GreetBot/domain.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 intents:
   - greet
diff --git a/data/test_nlu_no_responses/nlu_no_responses.yml b/data/test_nlu_no_responses/nlu_no_responses.yml
index 96b7e0466a87..295e97433e19 100644
--- a/data/test_nlu_no_responses/nlu_no_responses.yml
+++ b/data/test_nlu_no_responses/nlu_no_responses.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 nlu:
 - intent: chitchat/ask_name
diff --git a/data/test_nlu_no_responses/nlu_with_unicode.yml b/data/test_nlu_no_responses/nlu_with_unicode.yml
index f3dae3c3f89a..777ac06649e6 100644
--- a/data/test_nlu_no_responses/nlu_with_unicode.yml
+++ b/data/test_nlu_no_responses/nlu_with_unicode.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 nlu:
 - intent: greet
diff --git a/data/test_nlu_no_responses/sara_nlu_data.yml b/data/test_nlu_no_responses/sara_nlu_data.yml
index 670177fb8a1e..bb6c6c2f66cf 100644
--- a/data/test_nlu_no_responses/sara_nlu_data.yml
+++ b/data/test_nlu_no_responses/sara_nlu_data.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: why_rasa
   examples: |
diff --git a/data/test_number_nlu_examples/nlu.yml b/data/test_number_nlu_examples/nlu.yml
index c989479c5527..e4d742abcd56 100644
--- a/data/test_number_nlu_examples/nlu.yml
+++ b/data/test_number_nlu_examples/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 nlu:
 - intent: greet
diff --git a/data/test_response_selector_bot/data/nlu.yml b/data/test_response_selector_bot/data/nlu.yml
index 71ff79a9a081..97221263daaf 100644
--- a/data/test_response_selector_bot/data/nlu.yml
+++ b/data/test_response_selector_bot/data/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 nlu:
 - intent: greet
diff --git a/data/test_response_selector_bot/data/rules.yml b/data/test_response_selector_bot/data/rules.yml
index 4bbb69938c35..e60aae6a8060 100644
--- a/data/test_response_selector_bot/data/rules.yml
+++ b/data/test_response_selector_bot/data/rules.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 rules:
   
diff --git a/data/test_response_selector_bot/domain.yml b/data/test_response_selector_bot/domain.yml
index 35cfeb27093d..61b6d085578c 100644
--- a/data/test_response_selector_bot/domain.yml
+++ b/data/test_response_selector_bot/domain.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 intents:
   - greet
diff --git a/data/test_response_selector_bot/tests/test_stories.yml b/data/test_response_selector_bot/tests/test_stories.yml
index 24dbe9e35858..c4f23621ae8d 100644
--- a/data/test_response_selector_bot/tests/test_stories.yml
+++ b/data/test_response_selector_bot/tests/test_stories.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 stories:
 - story: test 0 - both predictions should be the same in the test stories
diff --git a/data/test_restaurantbot/data/nlu.yml b/data/test_restaurantbot/data/nlu.yml
index c5d5fe6f4a20..05e931e56428 100644
--- a/data/test_restaurantbot/data/nlu.yml
+++ b/data/test_restaurantbot/data/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: request_restaurant
   examples: |
diff --git a/data/test_restaurantbot/data/rules.yml b/data/test_restaurantbot/data/rules.yml
index d7a3371e9c88..2dcb27ab6482 100644
--- a/data/test_restaurantbot/data/rules.yml
+++ b/data/test_restaurantbot/data/rules.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 rules:
   - rule: request restaurant
     steps:
diff --git a/data/test_restaurantbot/data/stories.yml b/data/test_restaurantbot/data/stories.yml
index fc6ce77d1750..43cdef133c4f 100644
--- a/data/test_restaurantbot/data/stories.yml
+++ b/data/test_restaurantbot/data/stories.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 stories:
   - story: inform
     steps:
diff --git a/data/test_restaurantbot/domain.yml b/data/test_restaurantbot/domain.yml
index 85fab961458a..e079f54bd227 100644
--- a/data/test_restaurantbot/domain.yml
+++ b/data/test_restaurantbot/domain.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 intents:
   - request_restaurant:
diff --git a/data/test_selectors/nlu.yml b/data/test_selectors/nlu.yml
index b36269f5ddbb..73a267aa32e9 100644
--- a/data/test_selectors/nlu.yml
+++ b/data/test_selectors/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 nlu:
 - intent: faq/meta_inquire-ask_bot-challenge
diff --git a/data/test_spacybot/data/nlu.yml b/data/test_spacybot/data/nlu.yml
index bafa7709f9d7..2540a009f227 100644
--- a/data/test_spacybot/data/nlu.yml
+++ b/data/test_spacybot/data/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: greet
   examples: |
diff --git a/data/test_spacybot/data/stories.yml b/data/test_spacybot/data/stories.yml
index 5994916b1544..2fe99ab261d5 100644
--- a/data/test_spacybot/data/stories.yml
+++ b/data/test_spacybot/data/stories.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 stories:
 - story: happy path
   steps:
diff --git a/data/test_spacybot/domain.yml b/data/test_spacybot/domain.yml
index 5fa5411adbf6..88df7d9a4022 100644
--- a/data/test_spacybot/domain.yml
+++ b/data/test_spacybot/domain.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 intents:
   - greet
diff --git a/data/test_yaml_stories/rules_missing_intent.yml b/data/test_yaml_stories/rules_missing_intent.yml
index fa00340b0555..1ae429787dc2 100644
--- a/data/test_yaml_stories/rules_missing_intent.yml
+++ b/data/test_yaml_stories/rules_missing_intent.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 rules:
   - rule: greet user
diff --git a/data/test_yaml_stories/stories_e2e.yml b/data/test_yaml_stories/stories_e2e.yml
index b20be88ed78d..f87c3dfc0562 100644
--- a/data/test_yaml_stories/stories_e2e.yml
+++ b/data/test_yaml_stories/stories_e2e.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 stories:
 - story: happy path (intent to action)
diff --git a/data/test_yaml_stories/stories_missing_intent.yml b/data/test_yaml_stories/stories_missing_intent.yml
index dabfa932c4e2..7c949b3afbc7 100644
--- a/data/test_yaml_stories/stories_missing_intent.yml
+++ b/data/test_yaml_stories/stories_missing_intent.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 stories:
   - story: greet user
diff --git a/data/test_yaml_stories/stories_retrieval_intents.yml b/data/test_yaml_stories/stories_retrieval_intents.yml
index b6bd06164782..e1022ae699aa 100644
--- a/data/test_yaml_stories/stories_retrieval_intents.yml
+++ b/data/test_yaml_stories/stories_retrieval_intents.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 stories:
   - story: happy path
diff --git a/data/test_yaml_stories/stories_simple.yml b/data/test_yaml_stories/stories_simple.yml
index e6d3044d09b0..91e56a406ed1 100644
--- a/data/test_yaml_stories/stories_simple.yml
+++ b/data/test_yaml_stories/stories_simple.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 stories:
 - story: simple_story
diff --git a/data/test_yaml_stories/stories_unexpected_intent_unlearnable.yml b/data/test_yaml_stories/stories_unexpected_intent_unlearnable.yml
index 9f206dd26b06..8f72e7ec44e2 100644
--- a/data/test_yaml_stories/stories_unexpected_intent_unlearnable.yml
+++ b/data/test_yaml_stories/stories_unexpected_intent_unlearnable.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 stories:
 - story: "story 1"
   steps:
diff --git a/data/test_yaml_stories/test_multiple_action_unlikely_intent_warnings.yml b/data/test_yaml_stories/test_multiple_action_unlikely_intent_warnings.yml
index 1a05e39845d1..a4d920421b69 100644
--- a/data/test_yaml_stories/test_multiple_action_unlikely_intent_warnings.yml
+++ b/data/test_yaml_stories/test_multiple_action_unlikely_intent_warnings.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 stories:
   - story: path 1
     steps:
diff --git a/data/test_yaml_stories/test_stories_entity_annotations.yml b/data/test_yaml_stories/test_stories_entity_annotations.yml
index 7e8da5747f1c..51752b2843e4 100644
--- a/data/test_yaml_stories/test_stories_entity_annotations.yml
+++ b/data/test_yaml_stories/test_stories_entity_annotations.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 stories:
   - story: Test with entity annotation
diff --git a/docs/docs/migration-guide.mdx b/docs/docs/migration-guide.mdx
index 57f8138fde9e..9abad7a74c60 100644
--- a/docs/docs/migration-guide.mdx
+++ b/docs/docs/migration-guide.mdx
@@ -26,6 +26,18 @@ to convert your data from Markdown to YAML. Please use the commands described
 
 ### Training data
 
+#### Upgrading `version` from `2.0` to `3.0`
+
+At the top of your training data files, you need to change`version: "2.0"` to `version: "3.0"`.
+
+We follow semantic versioning for training data versions. This means breaking changes result in a new
+major version, while new features result in a new minor version. 
+
+The improvements to `slot mappings` in Rasa Open Source 3.0 were breaking changes, so we needed to upgrade
+from major version `2.0` to major version `3.0`. 
+
+#### `TrainingDataImporter`
+
 `TrainingDataImporter` and all its implementations are updated to contain only synchronous methods.
 If you have a custom data importer or rely on some functions provided by `TrainingDataImporter`, you need
 to update your implementation and function calls.
diff --git a/docs/docs/training-data-format.mdx b/docs/docs/training-data-format.mdx
index f74fb44ccd17..934615bb3872 100644
--- a/docs/docs/training-data-format.mdx
+++ b/docs/docs/training-data-format.mdx
@@ -56,7 +56,7 @@ Currently, the latest training data format specification for Rasa 2.x is 2.0.
 Here's a short example which keeps all training data in a single file:
 
 ```yaml-rasa
-version: "2.0"
+version: "3.0"
 
 nlu:
 - intent: greet
diff --git a/examples/concertbot/data/nlu.yml b/examples/concertbot/data/nlu.yml
index db119cf6c4c9..d1186a0e6f49 100644
--- a/examples/concertbot/data/nlu.yml
+++ b/examples/concertbot/data/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
   - intent: greet
     examples: |
diff --git a/examples/concertbot/data/rules.yml b/examples/concertbot/data/rules.yml
index 0f2b52ebe8b2..84523ceac8dd 100644
--- a/examples/concertbot/data/rules.yml
+++ b/examples/concertbot/data/rules.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 rules:
   - rule: fallback
     steps:
diff --git a/examples/concertbot/data/stories.yml b/examples/concertbot/data/stories.yml
index 9e8afde366aa..ca0dea84d46a 100644
--- a/examples/concertbot/data/stories.yml
+++ b/examples/concertbot/data/stories.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 stories:
   - story: search_venues
     steps:
diff --git a/examples/concertbot/domain.yml b/examples/concertbot/domain.yml
index b4794f05707c..fdd912248fbd 100644
--- a/examples/concertbot/domain.yml
+++ b/examples/concertbot/domain.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 intents:
   - affirm
diff --git a/examples/e2ebot/data/nlu.yml b/examples/e2ebot/data/nlu.yml
index 157115096bf2..b771f1164939 100644
--- a/examples/e2ebot/data/nlu.yml
+++ b/examples/e2ebot/data/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 nlu:
 - intent: greet
diff --git a/examples/e2ebot/data/stories.yml b/examples/e2ebot/data/stories.yml
index 5308b96ea756..0f87c79d0eee 100644
--- a/examples/e2ebot/data/stories.yml
+++ b/examples/e2ebot/data/stories.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 stories:
 - story: accepts suggestion
diff --git a/examples/e2ebot/domain.yml b/examples/e2ebot/domain.yml
index 16602d284dd9..ef3848182410 100644
--- a/examples/e2ebot/domain.yml
+++ b/examples/e2ebot/domain.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 actions:
  - utter_greet
diff --git a/examples/e2ebot/tests/test_stories.yaml b/examples/e2ebot/tests/test_stories.yaml
index 83b7b93b9a9c..9e3ab0d5b552 100644
--- a/examples/e2ebot/tests/test_stories.yaml
+++ b/examples/e2ebot/tests/test_stories.yaml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 stories:
 - story: Happy path accepts suggestion  
   steps:
diff --git a/examples/formbot/data/nlu.yml b/examples/formbot/data/nlu.yml
index 476ce71e684e..79bb806ec43b 100644
--- a/examples/formbot/data/nlu.yml
+++ b/examples/formbot/data/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: greet
   examples: |
diff --git a/examples/formbot/data/rules.yml b/examples/formbot/data/rules.yml
index ca4638c240f3..ecef5eca262f 100644
--- a/examples/formbot/data/rules.yml
+++ b/examples/formbot/data/rules.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 rules:
   - rule: Greet user
     steps:
diff --git a/examples/formbot/data/stories.yml b/examples/formbot/data/stories.yml
index 9309e7bbeca0..b413b6324325 100644
--- a/examples/formbot/data/stories.yml
+++ b/examples/formbot/data/stories.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 stories:
   - story: stop form + continue
     steps:
diff --git a/examples/formbot/domain.yml b/examples/formbot/domain.yml
index 11be2bcaf371..507785650c7e 100644
--- a/examples/formbot/domain.yml
+++ b/examples/formbot/domain.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 intents:
   - request_restaurant:
       use_entities: []
diff --git a/examples/formbot/tests/test_stories.yml b/examples/formbot/tests/test_stories.yml
index 701a313454c9..db90b37ec043 100644
--- a/examples/formbot/tests/test_stories.yml
+++ b/examples/formbot/tests/test_stories.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 stories:
 - story: Happy path
   steps:
diff --git a/examples/knowledgebasebot/data/nlu.yml b/examples/knowledgebasebot/data/nlu.yml
index 4e81764da652..04f85eca9f1a 100644
--- a/examples/knowledgebasebot/data/nlu.yml
+++ b/examples/knowledgebasebot/data/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
   - intent: bot_challenge
     examples: |
diff --git a/examples/knowledgebasebot/data/rules.yml b/examples/knowledgebasebot/data/rules.yml
index a34c47985432..0a6aab10aac6 100644
--- a/examples/knowledgebasebot/data/rules.yml
+++ b/examples/knowledgebasebot/data/rules.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 rules:
   - rule: greet
     steps:
diff --git a/examples/knowledgebasebot/data/stories.yml b/examples/knowledgebasebot/data/stories.yml
index 31e572b53fb5..f0ec3843ffd1 100644
--- a/examples/knowledgebasebot/data/stories.yml
+++ b/examples/knowledgebasebot/data/stories.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 stories:
   - story: greet and then query knowledge base
     steps:
diff --git a/examples/knowledgebasebot/domain.yml b/examples/knowledgebasebot/domain.yml
index d38226f5bdde..52bf4278f934 100644
--- a/examples/knowledgebasebot/domain.yml
+++ b/examples/knowledgebasebot/domain.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 intents:
   - greet
diff --git a/examples/moodbot/data/nlu.yml b/examples/moodbot/data/nlu.yml
index c98b09f01773..08b8c8ba98ea 100644
--- a/examples/moodbot/data/nlu.yml
+++ b/examples/moodbot/data/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: greet
   examples: |
diff --git a/examples/moodbot/data/rules.yml b/examples/moodbot/data/rules.yml
index ba0abecb03bc..8a2bc190c03c 100644
--- a/examples/moodbot/data/rules.yml
+++ b/examples/moodbot/data/rules.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 rules:
 - rule: Say goodbye anytime the user says goodbye
   steps:
diff --git a/examples/moodbot/data/stories.yml b/examples/moodbot/data/stories.yml
index 3a860c7a978e..34e9dc763543 100644
--- a/examples/moodbot/data/stories.yml
+++ b/examples/moodbot/data/stories.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 stories:
 - story: happy path
   steps:
diff --git a/examples/moodbot/domain.yml b/examples/moodbot/domain.yml
index 815185cbccd3..ae32962f2667 100644
--- a/examples/moodbot/domain.yml
+++ b/examples/moodbot/domain.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 intents:
   - greet
diff --git a/examples/reminderbot/data/nlu.yml b/examples/reminderbot/data/nlu.yml
index 25506636f83d..89afcda420de 100644
--- a/examples/reminderbot/data/nlu.yml
+++ b/examples/reminderbot/data/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
   - intent: greet
     examples: |
diff --git a/examples/reminderbot/data/rules.yml b/examples/reminderbot/data/rules.yml
index 7a6e7a56f740..b0a923612e53 100644
--- a/examples/reminderbot/data/rules.yml
+++ b/examples/reminderbot/data/rules.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 rules:
 - rule: greet
   steps:
diff --git a/examples/reminderbot/data/stories.yml b/examples/reminderbot/data/stories.yml
index 964e2601e28a..ccc89c2cf0fc 100644
--- a/examples/reminderbot/data/stories.yml
+++ b/examples/reminderbot/data/stories.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 stories:
   - story: Happy path
     steps:
diff --git a/examples/reminderbot/domain.yml b/examples/reminderbot/domain.yml
index 3933cc164328..5fba01f2c654 100644
--- a/examples/reminderbot/domain.yml
+++ b/examples/reminderbot/domain.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 session_config:
   session_expiration_time: 60
diff --git a/examples/responseselectorbot/data/nlu.yml b/examples/responseselectorbot/data/nlu.yml
index 71ff79a9a081..97221263daaf 100644
--- a/examples/responseselectorbot/data/nlu.yml
+++ b/examples/responseselectorbot/data/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 nlu:
 - intent: greet
diff --git a/examples/responseselectorbot/data/rules.yml b/examples/responseselectorbot/data/rules.yml
index 4bbb69938c35..e60aae6a8060 100644
--- a/examples/responseselectorbot/data/rules.yml
+++ b/examples/responseselectorbot/data/rules.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 rules:
   
diff --git a/examples/responseselectorbot/data/stories.yml b/examples/responseselectorbot/data/stories.yml
index 0959956677d5..aecfd66d91e7 100644
--- a/examples/responseselectorbot/data/stories.yml
+++ b/examples/responseselectorbot/data/stories.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 stories:
 
diff --git a/examples/responseselectorbot/domain.yml b/examples/responseselectorbot/domain.yml
index 35cfeb27093d..61b6d085578c 100644
--- a/examples/responseselectorbot/domain.yml
+++ b/examples/responseselectorbot/domain.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 intents:
   - greet
diff --git a/examples/rules/data/nlu.yml b/examples/rules/data/nlu.yml
index 9a4f76bb8a8f..67b215b06e65 100644
--- a/examples/rules/data/nlu.yml
+++ b/examples/rules/data/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: greet
   examples: |
diff --git a/examples/rules/data/rules.yml b/examples/rules/data/rules.yml
index 46722d2f6acc..034561bc02ca 100644
--- a/examples/rules/data/rules.yml
+++ b/examples/rules/data/rules.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 rules:
 
 - rule: Greet
diff --git a/examples/rules/domain.yml b/examples/rules/domain.yml
index ad738ad23319..a4306c67cac6 100644
--- a/examples/rules/domain.yml
+++ b/examples/rules/domain.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 intents:
 - activate_q_form
diff --git a/rasa/cli/initial_project/data/nlu.yml b/rasa/cli/initial_project/data/nlu.yml
index ba78f6af7259..63766c4414d4 100644
--- a/rasa/cli/initial_project/data/nlu.yml
+++ b/rasa/cli/initial_project/data/nlu.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 nlu:
 - intent: greet
diff --git a/rasa/cli/initial_project/data/rules.yml b/rasa/cli/initial_project/data/rules.yml
index 51f030d081ae..04986d3b42ed 100644
--- a/rasa/cli/initial_project/data/rules.yml
+++ b/rasa/cli/initial_project/data/rules.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 rules:
 
diff --git a/rasa/cli/initial_project/data/stories.yml b/rasa/cli/initial_project/data/stories.yml
index 077651b970cb..a54f8480e035 100644
--- a/rasa/cli/initial_project/data/stories.yml
+++ b/rasa/cli/initial_project/data/stories.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 stories:
 
diff --git a/rasa/cli/initial_project/domain.yml b/rasa/cli/initial_project/domain.yml
index b522557791c1..f78974463aa6 100644
--- a/rasa/cli/initial_project/domain.yml
+++ b/rasa/cli/initial_project/domain.yml
@@ -1,4 +1,4 @@
-version: "2.0"
+version: "3.0"
 
 intents:
   - greet
diff --git a/rasa/shared/constants.py b/rasa/shared/constants.py
index fca75ac106ae..314b3dbdc41e 100644
--- a/rasa/shared/constants.py
+++ b/rasa/shared/constants.py
@@ -38,7 +38,7 @@
 CONFIG_SCHEMA_FILE = "shared/utils/schemas/config.yml"
 RESPONSES_SCHEMA_FILE = "shared/nlu/training_data/schemas/responses.yml"
 SCHEMA_EXTENSIONS_FILE = "shared/utils/pykwalify_extensions.py"
-LATEST_TRAINING_DATA_FORMAT_VERSION = "2.0"
+LATEST_TRAINING_DATA_FORMAT_VERSION = "3.0"
 
 DOMAIN_SCHEMA_FILE = "shared/utils/schemas/domain.yml"
 
diff --git a/tests/cli/test_rasa_data.py b/tests/cli/test_rasa_data.py
index 6fdb8974a7a9..fe1fd7a3ac2a 100644
--- a/tests/cli/test_rasa_data.py
+++ b/tests/cli/test_rasa_data.py
@@ -156,7 +156,7 @@ def test_validate_files_action_not_found_invalid_domain(
     file_name = tmp_path / f"{file_type}.yml"
     file_name.write_text(
         f"""
-        version: "2.0"
+        version: "3.0"
         {file_type}:
         - {data_type}: test path
           steps:
@@ -183,7 +183,7 @@ def test_validate_files_form_not_found_invalid_domain(
     file_name = tmp_path / f"{file_type}.yml"
     file_name.write_text(
         f"""
-        version: "2.0"
+        version: "3.0"
         {file_type}:
         - {data_type}: test path
           steps:
@@ -206,7 +206,7 @@ def test_validate_files_form_slots_not_matching(tmp_path: Path):
     domain_file_name = tmp_path / "domain.yml"
     domain_file_name.write_text(
         """
-        version: "2.0"
+        version: "3.0"
         forms:
           name_form:
             required_slots:
@@ -266,7 +266,7 @@ def test_validate_files_invalid_slot_mappings(tmp_path: Path):
     slot_name = "started_booking_form"
     domain.write_text(
         f"""
-            version: "2.0"
+            version: "3.0"
             intents:
             - activate_booking
             entities:
diff --git a/tests/cli/test_rasa_test.py b/tests/cli/test_rasa_test.py
index 9f5fab06e8f8..ddafedfa4728 100644
--- a/tests/cli/test_rasa_test.py
+++ b/tests/cli/test_rasa_test.py
@@ -47,7 +47,7 @@ def test_test_core_warnings(run_in_simple_project_with_model: Callable[..., RunR
     )
 
     simple_test_story_yaml = """
-version: "2.0"
+version: "3.0"
 stories:
 - story: unlikely path
   steps:
diff --git a/tests/core/actions/test_forms.py b/tests/core/actions/test_forms.py
index b6bab229cf08..aefc0040672b 100644
--- a/tests/core/actions/test_forms.py
+++ b/tests/core/actions/test_forms.py
@@ -120,7 +120,7 @@ async def test_switch_forms_with_same_slot(default_agent: Agent):
     utter_ask_form_2 = f"Please provide the value for {slot_a} of form 2"
 
     domain = f"""
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: order_status
   examples: |
@@ -727,7 +727,7 @@ def test_temporary_tracker():
     sender_id = "test"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         slots:
           {extra_slot}:
             type: any
@@ -1416,7 +1416,7 @@ async def test_extract_other_slots_with_matched_mapping_conditions():
     domain = Domain.from_yaml(
         textwrap.dedent(
             """
-            version: "2.0"
+            version: "3.0"
             intent:
             - greet
             - inform
@@ -1487,7 +1487,7 @@ async def test_extract_other_slots_raises_no_matched_conditions():
     domain = Domain.from_yaml(
         textwrap.dedent(
             """
-            version: "2.0"
+            version: "3.0"
             intent:
             - greet
             - inform
@@ -1557,7 +1557,7 @@ async def test_extract_other_slots_raises_no_matched_conditions():
 async def test_action_extract_slots_custom_mapping_with_condition():
     domain_yaml = textwrap.dedent(
         """
-        version: "2.0"
+        version: "3.0"
 
         slots:
           custom_slot:
diff --git a/tests/core/actions/test_two_stage_fallback.py b/tests/core/actions/test_two_stage_fallback.py
index 49f2c8340e03..d98604891d75 100644
--- a/tests/core/actions/test_two_stage_fallback.py
+++ b/tests/core/actions/test_two_stage_fallback.py
@@ -156,7 +156,7 @@ async def test_ask_rephrase_after_failed_affirmation():
 
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         responses:
             utter_ask_rephrase:
             - text: {rephrase_text}
diff --git a/tests/core/nlg/test_response.py b/tests/core/nlg/test_response.py
index 843eccc1a309..d9f81f6fa16d 100644
--- a/tests/core/nlg/test_response.py
+++ b/tests/core/nlg/test_response.py
@@ -250,7 +250,7 @@ async def test_nlg_conditional_response_variations_with_diff_slot_types(
 async def test_nlg_non_matching_channel():
     domain = Domain.from_yaml(
         """
-    version: "2.0"
+    version: "3.0"
     responses:
         utter_hi:
         - text: "Hello"
@@ -267,7 +267,7 @@ async def test_nlg_non_matching_channel():
 async def test_nlg_conditional_response_variations_with_none_slot():
     domain = Domain.from_yaml(
         """
-        version: "2.0"
+        version: "3.0"
         responses:
             utter_action:
             - text: "text A"
@@ -289,7 +289,7 @@ async def test_nlg_conditional_response_variations_with_none_slot():
 async def test_nlg_conditional_response_variations_with_slot_not_a_constraint():
     domain = Domain.from_yaml(
         """
-            version: "2.0"
+            version: "3.0"
             responses:
                 utter_action:
                 - text: "text A"
@@ -311,7 +311,7 @@ async def test_nlg_conditional_response_variations_with_slot_not_a_constraint():
 async def test_nlg_conditional_response_variations_with_null_slot():
     domain = Domain.from_yaml(
         """
-                version: "2.0"
+                version: "3.0"
                 responses:
                     utter_action:
                     - text: "text for null"
@@ -337,7 +337,7 @@ async def test_nlg_conditional_response_variations_with_null_slot():
 async def test_nlg_conditional_response_variations_channel_no_condition_met():
     domain = Domain.from_yaml(
         """
-        version: "2.0"
+        version: "3.0"
         responses:
            utter_action:
              - text: "example with channel"
@@ -358,7 +358,7 @@ async def test_nlg_conditional_response_variations_channel_no_condition_met():
 async def test_nlg_conditional_response_variation_condition_met_channel_mismatch():
     domain = Domain.from_yaml(
         """
-        version: "2.0"
+        version: "3.0"
         responses:
            utter_action:
              - text: "example with channel"
@@ -424,7 +424,7 @@ async def test_nlg_conditional_response_variation_condition_met_channel_mismatch
 async def test_nlg_conditional_edgecases(slots, channel, expected_response):
     domain = Domain.from_yaml(
         """
-        version: "2.0"
+        version: "3.0"
         responses:
            utter_action:
              - text: "condition example A with channel"
@@ -467,7 +467,7 @@ async def test_nlg_conditional_response_variations_condition_logging(
 ):
     domain = Domain.from_yaml(
         """
-        version: "2.0"
+        version: "3.0"
         responses:
            utter_action:
              - text: "example"
diff --git a/tests/core/policies/test_rule_policy.py b/tests/core/policies/test_rule_policy.py
index 8dc3797deaa5..3d42ee27346b 100644
--- a/tests/core/policies/test_rule_policy.py
+++ b/tests/core/policies/test_rule_policy.py
@@ -153,7 +153,7 @@ def test_potential_contradiction_resolved_by_conversation_start(policy: RulePoli
     utter_anti_greet_action = "utter_anti_greet"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -206,7 +206,7 @@ def test_potential_contradiction_resolved_by_conversation_start_when_slot_initia
     some_slot_initial_value = "slot1value"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -279,7 +279,7 @@ def test_potential_contradiction_resolved_by_conversation_start_when_slot_initia
     some_slot_initial_value = "slot1value"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -344,7 +344,7 @@ def test_potential_contradiction_resolved_by_conversation_start_when_slot_initia
 def test_restrict_multiple_user_inputs_in_rules(policy: RulePolicy):
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -376,7 +376,7 @@ def test_incomplete_rules_due_to_slots(policy: RulePolicy):
     some_slot = "some_slot"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -446,7 +446,7 @@ def test_no_incomplete_rules_due_to_slots_after_listen(policy: RulePolicy):
     some_slot = "some_slot"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -508,7 +508,7 @@ def test_no_incomplete_rules_due_to_additional_slots_set(policy: RulePolicy):
     some_other_slot_value = "value2"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -563,7 +563,7 @@ def test_incomplete_rules_due_to_loops(policy: RulePolicy):
     some_form = "some_form"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         forms:
@@ -628,7 +628,7 @@ def test_contradicting_rules(policy: RulePolicy):
     utter_anti_greet_action = "utter_anti_greet"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -668,7 +668,7 @@ def test_contradicting_rules_and_stories(policy: RulePolicy):
     utter_anti_greet_action = "utter_anti_greet"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -812,7 +812,7 @@ def test_rule_policy_contradicting_rule_finetune(
 def test_faq_rule(policy: RulePolicy):
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -839,7 +839,7 @@ async def test_predict_form_action_if_in_form(policy: RulePolicy):
 
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -884,7 +884,7 @@ async def test_predict_loop_action_if_in_loop_but_there_is_e2e_rule(policy: Rule
 
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -940,7 +940,7 @@ async def test_predict_form_action_if_multiple_turns(policy: RulePolicy):
     other_intent = "bye"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         - {other_intent}
@@ -1089,7 +1089,7 @@ async def test_predict_action_listen_after_form(policy: RulePolicy):
 
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -1136,7 +1136,7 @@ async def test_dont_predict_form_if_already_finished(policy: RulePolicy):
 
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -1187,7 +1187,7 @@ async def test_form_unhappy_path(policy: RulePolicy):
 
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -1232,7 +1232,7 @@ async def test_form_unhappy_path_from_general_rule(policy: RulePolicy):
 
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -1289,7 +1289,7 @@ async def test_form_unhappy_path_from_in_form_rule(policy: RulePolicy):
 
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -1365,7 +1365,7 @@ async def test_form_unhappy_path_from_story(policy: RulePolicy):
 
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -1442,7 +1442,7 @@ async def test_form_unhappy_path_no_validation_from_rule(
 
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -1533,7 +1533,7 @@ async def test_form_unhappy_path_no_validation_from_story(policy: RulePolicy):
 
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -1603,7 +1603,7 @@ async def test_form_unhappy_path_without_rule(policy: RulePolicy):
     other_intent = "bye"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         - {other_intent}
@@ -1649,7 +1649,7 @@ async def test_form_activation_rule(policy: RulePolicy):
     other_intent = "bye"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         - {other_intent}
@@ -1690,7 +1690,7 @@ async def test_failing_form_activation_due_to_no_rule(policy: RulePolicy):
     other_intent = "bye"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         - {other_intent}
@@ -1731,7 +1731,7 @@ def test_form_submit_rule(policy: RulePolicy):
     submit_action_name = "utter_submit"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -1785,7 +1785,7 @@ def test_immediate_submit(policy: RulePolicy):
     slot = "some_slot"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -1891,7 +1891,7 @@ async def test_rule_policy_slot_filling_from_text(
 async def test_one_stage_fallback_rule(policy: RulePolicy):
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         - {DEFAULT_NLU_FALLBACK_INTENT_NAME}
@@ -1974,7 +1974,7 @@ def test_default_actions(
 ):
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -2002,7 +2002,7 @@ def test_default_actions(
 def test_e2e_beats_default_actions(intent_name: Text, policy: RulePolicy):
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         actions:
@@ -2063,7 +2063,7 @@ def test_predict_core_fallback(
     other_intent = "other"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         - {other_intent}
@@ -2096,7 +2096,7 @@ def test_predict_nothing_if_fallback_disabled(
     other_intent = "other"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         - {other_intent}
@@ -2123,7 +2123,7 @@ def test_hide_rule_turn(policy: RulePolicy):
     action_chitchat = "action_chitchat"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         - {chitchat}
@@ -2203,7 +2203,7 @@ def test_hide_rule_turn_with_slots(
     some_other_slot_value = "value2"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {some_intent}
         - {some_other_intent}
@@ -2330,7 +2330,7 @@ def test_hide_rule_turn_no_last_action_listen(
     followup_on_chitchat = "followup_on_chitchat"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {chitchat}
         actions:
@@ -2418,7 +2418,7 @@ def test_hide_rule_turn_with_loops(
     action_chitchat = "action_chitchat"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         - {activate_form}
@@ -2526,7 +2526,7 @@ def test_do_not_hide_rule_turn_with_loops_in_stories(policy: RulePolicy):
     activate_form = "activate_form"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {activate_form}
         slots:
@@ -2583,7 +2583,7 @@ def test_hide_rule_turn_with_loops_as_followup_action(policy: RulePolicy):
     activate_form = "activate_form"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {GREET_INTENT_NAME}
         - {activate_form}
@@ -2689,7 +2689,7 @@ def test_remove_action_listen_prediction_if_contradicts_with_story(policy: RuleP
     utter_2 = "utter_2"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {intent_1}
         actions:
@@ -2734,7 +2734,7 @@ def test_keep_action_listen_prediction_after_predictable_action(policy: RulePoli
     utter_3 = "utter_3"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {intent_1}
         actions:
@@ -2780,7 +2780,7 @@ def test_keep_action_listen_prediction_if_last_prediction(policy: RulePolicy):
     utter_2 = "utter_2"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {intent_1}
         actions:
@@ -2821,7 +2821,7 @@ def test_keep_action_listen_prediction_if_contradicts_with_rule(policy: RulePoli
     utter_2 = "utter_2"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {intent_1}
         actions:
@@ -2864,7 +2864,7 @@ def test_raise_contradiction_if_rule_contradicts_with_story(policy: RulePolicy):
     utter_2 = "utter_2"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {intent_1}
         actions:
@@ -2906,7 +2906,7 @@ def test_rule_with_multiple_entities(policy: RulePolicy):
     utter_1 = "utter_1"
     domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {intent_1}
         entities:
@@ -2970,7 +2970,7 @@ def test_rule_with_multiple_slots(policy: RulePolicy):
     slot_2 = "slot_2"
     domain = Domain.from_yaml(
         f"""
-            version: "2.0"
+            version: "3.0"
             intents:
             - {intent_1}
             actions:
@@ -3038,7 +3038,7 @@ def test_include_action_unlikely_intent(policy: RulePolicy):
     slot_2 = "slot_2"
     domain = Domain.from_yaml(
         f"""
-                version: "2.0"
+                version: "3.0"
                 intents:
                 - {intent_1}
                 actions:
diff --git a/tests/core/policies/test_ted_policy.py b/tests/core/policies/test_ted_policy.py
index b7a8ed544c02..4d0d8cd90a6a 100644
--- a/tests/core/policies/test_ted_policy.py
+++ b/tests/core/policies/test_ted_policy.py
@@ -251,7 +251,7 @@ def test_training_with_no_intent(
         stories = tmp_path / "stories.yml"
         stories.write_text(
             """
-            version: "2.0"
+            version: "3.0"
             stories:
             - story: test path
               steps:
diff --git a/tests/core/policies/test_unexpected_intent_policy.py b/tests/core/policies/test_unexpected_intent_policy.py
index 36bc4bcdb7d6..5e220de03aa5 100644
--- a/tests/core/policies/test_unexpected_intent_policy.py
+++ b/tests/core/policies/test_unexpected_intent_policy.py
@@ -139,7 +139,7 @@ def test_training_with_no_intent(
         stories = tmp_path / "stories.yml"
         stories.write_text(
             """
-            version: "2.0"
+            version: "3.0"
             stories:
             - story: test path
               steps:
diff --git a/tests/core/test_actions.py b/tests/core/test_actions.py
index 2c8dbf2d50a4..a3e2797d6525 100644
--- a/tests/core/test_actions.py
+++ b/tests/core/test_actions.py
@@ -1151,7 +1151,7 @@ async def test_action_extract_slots_predefined_mappings(
     domain = Domain.from_yaml(
         textwrap.dedent(
             """
-            version: "2.0"
+            version: "3.0"
             intents:
             - inform
             - greet
@@ -1236,7 +1236,7 @@ async def test_action_extract_slots_with_from_trigger_mappings():
     domain = Domain.from_yaml(
         textwrap.dedent(
             """
-            version: "2.0"
+            version: "3.0"
             intents:
             - greet
             - inform
@@ -1354,7 +1354,7 @@ async def test_action_extract_slots_with_list_slot(
     domain = Domain.from_yaml(
         textwrap.dedent(
             f"""
-    version: "2.0"
+    version: "3.0"
 
     slots:
       {slot_name}:
@@ -1450,7 +1450,7 @@ async def test_action_extract_slots_with_matched_mapping_condition():
     domain = Domain.from_yaml(
         textwrap.dedent(
             f"""
-            version: "2.0"
+            version: "3.0"
             intent:
             - greet
             - inform
@@ -1503,7 +1503,7 @@ async def test_action_extract_slots_no_matched_mapping_conditions():
     domain = Domain.from_yaml(
         textwrap.dedent(
             f"""
-            version: "2.0"
+            version: "3.0"
             intent:
             - greet
             - inform
@@ -1746,7 +1746,7 @@ async def test_extract_other_list_slot_from_entity(
     domain = Domain.from_yaml(
         textwrap.dedent(
             f"""
-    version: "2.0"
+    version: "3.0"
 
     slots:
       {slot_name}:
@@ -1958,7 +1958,7 @@ async def test_action_extract_slots_execute_validation_action(
 ):
     domain_yaml = textwrap.dedent(
         """
-        version: "2.0"
+        version: "3.0"
 
         intents:
         - greet
@@ -2022,7 +2022,7 @@ async def test_action_extract_slots_execute_validation_action(
 async def test_action_extract_slots_custom_action_and_predefined_slot_validation():
     domain_yaml = textwrap.dedent(
         """
-        version: "2.0"
+        version: "3.0"
 
         intents:
         - inform
@@ -2089,7 +2089,7 @@ async def test_action_extract_slots_custom_action_and_predefined_slot_validation
 async def test_action_extract_slots_with_duplicate_custom_actions():
     domain_yaml = textwrap.dedent(
         """
-        version: "2.0"
+        version: "3.0"
 
         intents:
         - inform
@@ -2161,7 +2161,7 @@ async def test_action_extract_slots_with_duplicate_custom_actions():
 async def test_action_extract_slots_disallowed_events(caplog: LogCaptureFixture):
     domain_yaml = textwrap.dedent(
         """
-        version: "2.0"
+        version: "3.0"
 
         slots:
           custom_slot_one:
@@ -2225,7 +2225,7 @@ async def test_action_extract_slots_warns_custom_action_exceptions(
 ):
     domain_yaml = textwrap.dedent(
         """
-        version: "2.0"
+        version: "3.0"
 
         slots:
           custom_slot_one:
@@ -2273,7 +2273,7 @@ async def test_action_extract_slots_warns_custom_action_exceptions(
 async def test_action_extract_slots_with_empty_conditions():
     domain_yaml = textwrap.dedent(
         """
-        version: "2.0"
+        version: "3.0"
 
         entities:
         - city
@@ -2306,7 +2306,7 @@ async def test_action_extract_slots_with_empty_conditions():
 async def test_action_extract_slots_with_none_value_predefined_mapping():
     domain_yaml = textwrap.dedent(
         """
-        version: "2.0"
+        version: "3.0"
 
         entities:
         - some_entity
@@ -2347,7 +2347,7 @@ async def test_action_extract_slots_with_none_value_predefined_mapping():
 async def test_action_extract_slots_with_none_value_custom_mapping():
     domain_yaml = textwrap.dedent(
         """
-        version: "2.0"
+        version: "3.0"
 
         slots:
           custom_slot:
@@ -2390,7 +2390,7 @@ async def test_action_extract_slots_with_none_value_custom_mapping():
 async def test_action_extract_slots_returns_bot_uttered():
     domain_yaml = textwrap.dedent(
         """
-        version: "2.0"
+        version: "3.0"
 
         slots:
           custom_slot:
diff --git a/tests/core/test_migrate.py b/tests/core/test_migrate.py
index 07371e638585..6b8395002d68 100644
--- a/tests/core/test_migrate.py
+++ b/tests/core/test_migrate.py
@@ -29,7 +29,7 @@ def test_migrate_domain_format_with_required_slots(
     existing_domain_file = prepare_domain_path(
         tmp_path,
         """
-        version: "2.0"
+        version: "3.0"
         intents:
         - greet
         - affirm
@@ -132,7 +132,7 @@ def test_migrate_domain_form_without_required_slots(
     existing_domain_file = prepare_domain_path(
         tmp_path,
         """
-        version: "2.0"
+        version: "3.0"
         intents:
         - greet
         - affirm
@@ -246,7 +246,7 @@ def test_migrate_domain_with_diff_slot_types(
     existing_domain_file = prepare_domain_path(
         tmp_path,
         f"""
-        version: "2.0"
+        version: "3.0"
         entities:
             - outdoor
         slots:
@@ -298,7 +298,7 @@ def test_migrate_domain_format_from_dir(tmp_path: Path):
     prepare_domain_path(
         domain_dir,
         """
-        version: "2.0"
+        version: "3.0"
         entities:
             - outdoor
         slots:
@@ -312,7 +312,7 @@ def test_migrate_domain_format_from_dir(tmp_path: Path):
     prepare_domain_path(
         domain_dir,
         """
-        version: "2.0"
+        version: "3.0"
         forms:
           reservation_form:
             required_slots:
@@ -345,7 +345,7 @@ def test_migrate_domain_all_keys(tmp_path: Path, domain_out_file: Path):
     existing_domain_file = prepare_domain_path(
         tmp_path,
         """
-        version: "2.0"
+        version: "3.0"
         intents:
         - greet
         entities:
@@ -390,7 +390,7 @@ def test_migrate_domain_format_with_custom_slot(tmp_path: Path, domain_out_file:
     existing_domain_file = prepare_domain_path(
         tmp_path,
         """
-        version: "2.0"
+        version: "3.0"
         intents:
         - greet
         - affirm
@@ -446,7 +446,7 @@ def test_migrate_domain_format_duplicated_slots_in_forms(
     existing_domain_file = prepare_domain_path(
         tmp_path,
         """
-        version: "2.0"
+        version: "3.0"
         intents:
         - greet
         - affirm
@@ -539,7 +539,7 @@ def test_migrate_domain_dir_with_out_path_as_file(tmp_path: Path):
     prepare_domain_path(
         domain_dir,
         """
-        version: "2.0"
+        version: "3.0"
         entities:
             - outdoor
         slots:
@@ -553,7 +553,7 @@ def test_migrate_domain_dir_with_out_path_as_file(tmp_path: Path):
     prepare_domain_path(
         domain_dir,
         """
-        version: "2.0"
+        version: "3.0"
         forms:
           reservation_form:
             required_slots:
@@ -586,7 +586,7 @@ def test_migrate_domain_multiple_files_with_duplicate_slots(tmp_path: Path,):
     prepare_domain_path(
         domain_dir,
         """
-        version: "2.0"
+        version: "3.0"
         entities:
             - outdoor
         slots:
@@ -600,7 +600,7 @@ def test_migrate_domain_multiple_files_with_duplicate_slots(tmp_path: Path,):
     prepare_domain_path(
         domain_dir,
         """
-        version: "2.0"
+        version: "3.0"
         entities:
             - outdoor
         slots:
@@ -625,7 +625,7 @@ def test_migrate_domain_with_multiple_files_with_duplicate_forms(tmp_path: Path)
     prepare_domain_path(
         domain_dir,
         """
-        version: "2.0"
+        version: "3.0"
         forms:
           reservation_form:
             required_slots:
@@ -640,7 +640,7 @@ def test_migrate_domain_with_multiple_files_with_duplicate_forms(tmp_path: Path)
     prepare_domain_path(
         domain_dir,
         """
-        version: "2.0"
+        version: "3.0"
         forms:
           reservation_form:
             required_slots:
@@ -667,7 +667,7 @@ def test_migrate_domain_from_dir_with_other_sections(tmp_path: Path):
     prepare_domain_path(
         domain_dir,
         """
-        version: "2.0"
+        version: "3.0"
         entities:
         - outdoor
         slots:
@@ -681,7 +681,7 @@ def test_migrate_domain_from_dir_with_other_sections(tmp_path: Path):
     prepare_domain_path(
         domain_dir,
         """
-        version: "2.0"
+        version: "3.0"
         intents:
         - greet
         forms:
@@ -710,7 +710,7 @@ def test_migrate_domain_raises_exception_for_non_domain_file(tmp_path: Path):
     domain_file = prepare_domain_path(
         tmp_path,
         """
-        version: "2.0"
+        version: "3.0"
         nlu:
         - intent: greet
           examples: |
@@ -741,7 +741,7 @@ def test_migrate_domain_raises_for_non_domain_files(tmp_path: Path):
     prepare_domain_path(
         domain_dir,
         """
-        version: "2.0"
+        version: "3.0"
         nlu:
         - intent: greet
           examples: |
diff --git a/tests/core/test_processor.py b/tests/core/test_processor.py
index 0797fae0d404..a82a373dcdbf 100644
--- a/tests/core/test_processor.py
+++ b/tests/core/test_processor.py
@@ -1248,7 +1248,7 @@ async def test_predict_next_action_with_hidden_rules(
     story_slot = "story_slot"
     domain_content = textwrap.dedent(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - {rule_intent}
         - {story_intent}
diff --git a/tests/core/test_test.py b/tests/core/test_test.py
index e24dc97daefe..134df290d886 100644
--- a/tests/core/test_test.py
+++ b/tests/core/test_test.py
@@ -253,7 +253,7 @@ async def test_action_unlikely_intent_warning(
     file_name = tmp_path / "test_action_unlikely_intent_1.yml"
     file_name.write_text(
         """
-        version: "2.0"
+        version: "3.0"
         stories:
           - story: unlikely path
             steps:
@@ -302,7 +302,7 @@ async def test_action_unlikely_intent_correctly_predicted(
     file_name = tmp_path / "test_action_unlikely_intent_2.yml"
     file_name.write_text(
         """
-        version: "2.0"
+        version: "3.0"
         stories:
           - story: unlikely path (with action_unlikely_intent)
             steps:
@@ -347,7 +347,7 @@ async def test_wrong_action_after_action_unlikely_intent(
     test_file_name = tmp_path / "test.yml"
     test_file_name.write_text(
         """
-        version: "2.0"
+        version: "3.0"
         stories:
           - story: happy path
             steps:
@@ -365,7 +365,7 @@ async def test_wrong_action_after_action_unlikely_intent(
     train_file_name = tmp_path / "train.yml"
     train_file_name.write_text(
         """
-        version: "2.0"
+        version: "3.0"
         stories:
           - story: happy path
             steps:
@@ -416,7 +416,7 @@ async def test_action_unlikely_intent_not_found(
     test_file_name = tmp_path / "test_action_unlikely_intent_complete.yml"
     test_file_name.write_text(
         """
-        version: "2.0"
+        version: "3.0"
         stories:
           - story: happy path
             steps:
@@ -435,7 +435,7 @@ async def test_action_unlikely_intent_not_found(
     train_file_name = tmp_path / "train_without_action_unlikely_intent.yml"
     train_file_name.write_text(
         """
-        version: "2.0"
+        version: "3.0"
         stories:
           - story: happy path
             steps:
@@ -483,7 +483,7 @@ async def test_action_unlikely_intent_warning_and_story_error(
     test_file_name = tmp_path / "test.yml"
     test_file_name.write_text(
         """
-        version: "2.0"
+        version: "3.0"
         stories:
           - story: happy path
             steps:
@@ -501,7 +501,7 @@ async def test_action_unlikely_intent_warning_and_story_error(
     train_file_name = tmp_path / "train.yml"
     train_file_name.write_text(
         """
-        version: "2.0"
+        version: "3.0"
         stories:
           - story: happy path
             steps:
@@ -550,7 +550,7 @@ async def test_fail_on_prediction_errors(
     file_name = tmp_path / "test_action_unlikely_intent_2.yml"
     file_name.write_text(
         """
-        version: "2.0"
+        version: "3.0"
         stories:
           - story: unlikely path (with action_unlikely_intent)
             steps:
diff --git a/tests/core/training/test_interactive.py b/tests/core/training/test_interactive.py
index 0c1674cf36f9..bb24dcf9fab1 100644
--- a/tests/core/training/test_interactive.py
+++ b/tests/core/training/test_interactive.py
@@ -575,7 +575,7 @@ async def test_write_domain_to_file_with_form(tmp_path: Path):
     form_name = "my_form"
     old_domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         actions:
         - utter_greet
         - utter_goodbye
diff --git a/tests/nlu/extractors/test_extractor.py b/tests/nlu/extractors/test_extractor.py
index f4e311a97f68..888e9bdeecae 100644
--- a/tests/nlu/extractors/test_extractor.py
+++ b/tests/nlu/extractors/test_extractor.py
@@ -419,7 +419,7 @@ def test_split_entities_by_comma(
     "text, warnings",
     [
         (
-            'version: "2.0"\n'
+            'version: "3.0"\n'
             "nlu:\n"
             "- intent: test\n"
             "  examples: |\n"
@@ -427,7 +427,7 @@ def test_split_entities_by_comma(
             1,
         ),
         (
-            'version: "2.0"\n'
+            'version: "3.0"\n'
             "nlu:\n"
             "- intent: test\n"
             "  examples: |\n"
@@ -435,7 +435,7 @@ def test_split_entities_by_comma(
             1,
         ),
         (
-            'version: "2.0"\n'
+            'version: "3.0"\n'
             "nlu:\n"
             "- intent: test\n"
             "  examples: |\n"
@@ -444,7 +444,7 @@ def test_split_entities_by_comma(
             1,
         ),
         (
-            'version: "2.0"\n'
+            'version: "3.0"\n'
             "nlu:\n"
             "- intent: test\n"
             "  examples: |\n"
@@ -453,7 +453,7 @@ def test_split_entities_by_comma(
             1,
         ),
         (
-            'version: "2.0"\n'
+            'version: "3.0"\n'
             "nlu:\n"
             "- intent: test\n"
             "  examples: |\n"
diff --git a/tests/shared/core/test_domain.py b/tests/shared/core/test_domain.py
index 6f128e97f7f3..01da87c6c19d 100644
--- a/tests/shared/core/test_domain.py
+++ b/tests/shared/core/test_domain.py
@@ -179,7 +179,7 @@ def test_domain_from_template(domain: Domain):
 def test_avoid_action_repetition(domain: Domain):
     domain = Domain.from_yaml(
         """
-        version: "2.0"
+        version: "3.0"
         actions:
         - utter_greet
         responses:
@@ -443,7 +443,7 @@ def test_merge_session_config_if_first_is_not_default():
 def test_merge_with_empty_domain():
     domain = Domain.from_yaml(
         """
-        version: "2.0"
+        version: "3.0"
         config:
           store_entities_as_slots: false
         session_config:
@@ -475,7 +475,7 @@ def test_merge_with_empty_domain():
 def test_merge_with_empty_other_domain(other: Optional[Domain]):
     domain = Domain.from_yaml(
         """
-        version: "2.0"
+        version: "3.0"
         config:
           store_entities_as_slots: false
         session_config:
@@ -961,7 +961,7 @@ def test_not_add_knowledge_base_slots():
 def test_add_knowledge_base_slots():
     test_domain = Domain.from_yaml(
         f"""
-        version: "2.0"
+        version: "3.0"
         actions:
         - {DEFAULT_KNOWLEDGE_BASE_ACTION}
         """
@@ -1279,7 +1279,7 @@ def test_form_invalid_required_slots_raises():
     with pytest.raises(YamlValidationException):
         Domain.from_yaml(
             """
-            version: "2.0"
+            version: "3.0"
             entities:
             - some_entity
             forms:
@@ -1348,7 +1348,7 @@ def test_slot_invalid_mappings(domain_as_dict: Dict[Text, Any]):
         # Wrong type for slots
         (
             """
-        version: "2.0"
+        version: "3.0"
         slots:
           []
         """
@@ -1356,14 +1356,14 @@ def test_slot_invalid_mappings(domain_as_dict: Dict[Text, Any]):
         # Wrong type for slot names
         (
             """
-        version: "2.0"
+        version: "3.0"
         slots:
           some_slot: 5
         """
         ),
         (
             """
-        version: "2.0"
+        version: "3.0"
         slots:
           some_slot: []
         """
@@ -1583,7 +1583,7 @@ def test_domain_count_conditional_response_variations():
 def test_domain_with_no_form_slots():
     domain = Domain.from_yaml(
         """
-        version: "2.0"
+        version: "3.0"
         forms:
          contract_form:
           required_slots: []
@@ -1596,7 +1596,7 @@ def test_domain_with_empty_required_slots():
     with pytest.raises(YamlException):
         Domain.from_yaml(
             """
-            version: "2.0"
+            version: "3.0"
             forms:
               contract_form:
             """
@@ -1613,7 +1613,7 @@ def test_domain_invalid_yml_in_folder():
 
 def test_domain_fingerprint_consistency_across_runs():
     domain_yaml = """
-         version: "2.0"
+         version: "3.0"
          intents:
          - greet
          - goodbye
@@ -1646,7 +1646,7 @@ def test_domain_fingerprint_consistency_across_runs():
 def test_domain_fingerprint_uniqueness():
     domain = Domain.from_yaml(
         """
-         version: "2.0"
+         version: "3.0"
          intents:
          - greet
          - goodbye
@@ -1658,7 +1658,7 @@ def test_domain_fingerprint_uniqueness():
 
     domain_with_extra_intent = Domain.from_yaml(
         """
-        version: "2.0"
+        version: "3.0"
         intents:
         - greet
         - goodbye
@@ -1672,7 +1672,7 @@ def test_domain_fingerprint_uniqueness():
 
     domain_with_extra_action = Domain.from_yaml(
         """
-        version: "2.0"
+        version: "3.0"
         intents:
         - greet
         - goodbye
@@ -1686,7 +1686,7 @@ def test_domain_fingerprint_uniqueness():
 
     domain_with_extra_responses = Domain.from_yaml(
         """
-        version: "2.0"
+        version: "3.0"
         intents:
         - greet
         - goodbye
@@ -1705,7 +1705,7 @@ def test_domain_slots_for_entities_with_mapping_conditions_no_slot_set():
     domain = Domain.from_yaml(
         textwrap.dedent(
             """
-            version: "2.0"
+            version: "3.0"
             entities:
             - city
             slots:
@@ -1732,7 +1732,7 @@ def test_domain_slots_for_entities_sets_valid_slot():
     domain = Domain.from_yaml(
         textwrap.dedent(
             """
-            version: "2.0"
+            version: "3.0"
             entities:
             - city
             slots:
@@ -1753,7 +1753,7 @@ def test_domain_slots_for_entities_sets_valid_list_slot():
     domain = Domain.from_yaml(
         textwrap.dedent(
             """
-            version: "2.0"
+            version: "3.0"
             entities:
             - topping
             slots:
@@ -1778,7 +1778,7 @@ def test_domain_slots_for_entities_sets_valid_list_slot():
 def test_domain_slots_for_entities_with_entity_mapping_to_multiple_slots():
     domain = Domain.from_yaml(
         """
-        version: "2.0"
+        version: "3.0"
         entities:
         - city
         slots:
diff --git a/tests/shared/core/test_slot_mappings.py b/tests/shared/core/test_slot_mappings.py
index 791c73ccdd70..e82447fd4c88 100644
--- a/tests/shared/core/test_slot_mappings.py
+++ b/tests/shared/core/test_slot_mappings.py
@@ -68,7 +68,7 @@ def test_slot_mapping_intent_is_desired(domain: Domain):
 def test_slot_mappings_ignored_intents_during_active_loop():
     domain = Domain.from_yaml(
         """
-    version: "2.0"
+    version: "3.0"
     intents:
     - greet
     - chitchat
@@ -105,7 +105,7 @@ def test_missing_slot_mappings_raises():
     with pytest.raises(YamlValidationException):
         Domain.from_yaml(
             """
-            version: "2.0"
+            version: "3.0"
             slots:
               some_slot:
                 type: text
@@ -118,7 +118,7 @@ def test_slot_mappings_invalid_type_raises():
     with pytest.raises(YamlValidationException):
         Domain.from_yaml(
             """
-            version: "2.0"
+            version: "3.0"
             entities:
             - from_entity
             slots:
diff --git a/tests/shared/core/test_trackers.py b/tests/shared/core/test_trackers.py
index e29960cac249..f9b66888c372 100644
--- a/tests/shared/core/test_trackers.py
+++ b/tests/shared/core/test_trackers.py
@@ -1370,7 +1370,7 @@ def test_autofill_slots_for_policy_entities():
     domain = Domain.from_yaml(
         textwrap.dedent(
             f"""
-            version: "2.0"
+            version: "3.0"
             entities:
             - {nlu_entity}
             - {policy_entity}
diff --git a/tests/shared/core/training_data/story_writer/test_yaml_story_writer.py b/tests/shared/core/training_data/story_writer/test_yaml_story_writer.py
index e0d66257ef57..4c6f44ccd835 100644
--- a/tests/shared/core/training_data/story_writer/test_yaml_story_writer.py
+++ b/tests/shared/core/training_data/story_writer/test_yaml_story_writer.py
@@ -88,7 +88,7 @@ def test_yaml_writer_dumps_user_messages():
         dump.strip()
         == textwrap.dedent(
             """
-        version: "2.0"
+        version: "3.0"
         stories:
         - story: default
           steps:
@@ -116,7 +116,7 @@ def test_yaml_writer_doesnt_dump_action_unlikely_intent():
         dump.strip()
         == textwrap.dedent(
             """
-    version: "2.0"
+    version: "3.0"
     stories:
     - story: default
       steps:
@@ -140,7 +140,7 @@ def test_yaml_writer_avoids_dumping_not_existing_user_messages():
         dump.strip()
         == textwrap.dedent(
             """
-        version: "2.0"
+        version: "3.0"
         stories:
         - story: default
           steps:
@@ -198,7 +198,7 @@ def test_yaml_writer_stories_to_yaml_with_null_entities(domain: Domain):
     writer = YAMLStoryWriter()
     stories = textwrap.dedent(
         """
-    version: "2.0"
+    version: "3.0"
     stories:
     - story: happy path
       steps:
@@ -251,7 +251,7 @@ def test_writing_end_to_end_stories(domain: Domain):
         dump.strip()
         == textwrap.dedent(
             f"""
-        version: "2.0"
+        version: "3.0"
         stories:
         - story: {story_name}
           steps:
@@ -298,7 +298,7 @@ def test_reading_and_writing_end_to_end_stories_in_test_mode(domain: Domain):
         dump.strip()
         == textwrap.dedent(
             f"""
-        version: "2.0"
+        version: "3.0"
         stories:
         - story: {story_name}
           steps:
diff --git a/tests/shared/core/training_data/test_structures.py b/tests/shared/core/training_data/test_structures.py
index b5f3c662c69e..e17f5d413577 100644
--- a/tests/shared/core/training_data/test_structures.py
+++ b/tests/shared/core/training_data/test_structures.py
@@ -41,7 +41,7 @@ def test_session_start_is_not_serialised(domain: Domain):
         Story.from_events(tracker.events, "some-story01").story_steps
     )
 
-    expected = """version: "2.0"
+    expected = """version: "3.0"
 stories:
 - story: some-story01
   steps:
diff --git a/tests/shared/utils/test_validation.py b/tests/shared/utils/test_validation.py
index b6bba3ab2824..a13b2acf7f3e 100644
--- a/tests/shared/utils/test_validation.py
+++ b/tests/shared/utils/test_validation.py
@@ -51,7 +51,7 @@ def test_validate_yaml_schema_raise_exception(file: Text, schema: Text):
 
 def test_validate_yaml_schema_raise_exception_null_text():
     domain = """
-    version: "2.0"
+    version: "3.0"
     responses:
       utter_ask_email:
       - text: What is your email ID?
@@ -69,7 +69,7 @@ def test_validate_yaml_schema_raise_exception_null_text():
 
 def test_validate_yaml_schema_raise_exception_extra_hyphen_for_image():
     domain = """
-        version: "2.0"
+        version: "3.0"
         responses:
           utter_cheer_up:
           - image: https://i.imgur.com/nGF1K8f.jpg
@@ -226,7 +226,7 @@ def test_concurrent_schema_validation():
 
     def validate() -> None:
         payload = """
-version: "2.0"
+version: "3.0"
 nlu:
 - intent: greet
   examples: |
diff --git a/tests/test_model_testing.py b/tests/test_model_testing.py
index c8f7b9462792..2acff9e93672 100644
--- a/tests/test_model_testing.py
+++ b/tests/test_model_testing.py
@@ -190,7 +190,7 @@ def test_write_classification_errors():
         dump.strip()
         == textwrap.dedent(
             """
-        version: "2.0"
+        version: "3.0"
         stories:
         - story: default
           steps:
diff --git a/tests/test_model_training.py b/tests/test_model_training.py
index b291ea597077..5856481ab33c 100644
--- a/tests/test_model_training.py
+++ b/tests/test_model_training.py
@@ -959,7 +959,7 @@ def test_invalid_graph_schema(
 ):
     config = textwrap.dedent(
         """
-    version: "2.0"
+    version: "3.0"
     recipe: "default.v1"
 
     pipeline:
@@ -999,7 +999,7 @@ def test_fingerprint_changes_if_module_changes(
 
     config = textwrap.dedent(
         f"""
-    version: "2.0"
+    version: "3.0"
     recipe: "default.v1"
 
     policies:
diff --git a/tests/test_server.py b/tests/test_server.py
index 15736ae2dd79..75f867e4934f 100644
--- a/tests/test_server.py
+++ b/tests/test_server.py
@@ -571,7 +571,7 @@ async def test_train_with_yaml(
     rasa_app: SanicASGITestClient, tmp_path_factory: TempPathFactory,
 ):
     training_data = """
-version: "2.0"
+version: "3.0"
 
 stories:
 - story: My story
@@ -1766,7 +1766,7 @@ class NoInputChannels:
             ],
             None,
             True,
-            """version: "2.0"
+            """version: "3.0"
 stories:
 - story: some-conversation-ID
   steps:
@@ -1789,7 +1789,7 @@ class NoInputChannels:
             ],
             None,
             True,
-            """version: "2.0"
+            """version: "3.0"
 stories:
 - story: some-conversation-ID, story 1
   steps:
@@ -1819,7 +1819,7 @@ class NoInputChannels:
             ],
             None,
             False,
-            """version: "2.0"
+            """version: "3.0"
 stories:
 - story: some-conversation-ID
   steps:
@@ -1843,7 +1843,7 @@ class NoInputChannels:
             ],
             None,
             None,
-            """version: "2.0"
+            """version: "3.0"
 stories:
 - story: some-conversation-ID
   steps:
@@ -1866,7 +1866,7 @@ class NoInputChannels:
             ],
             4,
             True,
-            """version: "2.0"
+            """version: "3.0"
 stories:
 - story: some-conversation-ID
   steps:
@@ -1876,7 +1876,7 @@ class NoInputChannels:
   - action: utter_greet""",
         ),
         # empty conversation
-        ([], None, True, 'version: "2.0"'),
+        ([], None, True, 'version: "3.0"'),
         # Conversation with slot
         (
             [
@@ -1888,7 +1888,7 @@ class NoInputChannels:
             ],
             None,
             True,
-            """version: "2.0"
+            """version: "3.0"
 stories:
 - story: some-conversation-ID
   steps:
@@ -1992,7 +1992,7 @@ async def test_get_story_does_not_update_conversation_session(
     # expected story is returned
     assert (
         response.content.decode().strip()
-        == """version: "2.0"
+        == """version: "3.0"
 stories:
 - story: some-conversation-ID
   steps:
diff --git a/tests/test_validator.py b/tests/test_validator.py
index 3ac270617477..33efa5e8d392 100644
--- a/tests/test_validator.py
+++ b/tests/test_validator.py
@@ -99,7 +99,7 @@ def test_verify_bad_e2e_story_structure_when_text_identical(tmp_path: Path):
     story_file_name = tmp_path / "stories.yml"
     story_file_name.write_text(
         """
-        version: "2.0"
+        version: "3.0"
         stories:
         - story: path 1
           steps:
@@ -263,7 +263,7 @@ def test_verify_actions_in_stories_not_in_domain(tmp_path: Path, domain_path: Te
     story_file_name = tmp_path / "stories.yml"
     story_file_name.write_text(
         """
-        version: "2.0"
+        version: "3.0"
         stories:
         - story: story path 1
           steps:
@@ -290,7 +290,7 @@ def test_verify_actions_in_rules_not_in_domain(tmp_path: Path, domain_path: Text
     rules_file_name = tmp_path / "rules.yml"
     rules_file_name.write_text(
         """
-        version: "2.0"
+        version: "3.0"
         rules:
         - rule: rule path 1
           steps:
@@ -316,7 +316,7 @@ def test_verify_form_slots_invalid_domain(tmp_path: Path):
     domain = tmp_path / "domain.yml"
     domain.write_text(
         """
-        version: "2.0"
+        version: "3.0"
         forms:
           name_form:
             required_slots:
@@ -376,7 +376,7 @@ def test_valid_stories_rules_actions_in_domain(
     domain = tmp_path / "domain.yml"
     domain.write_text(
         """
-        version: "2.0"
+        version: "3.0"
         intents:
         - greet
         actions:
@@ -386,7 +386,7 @@ def test_valid_stories_rules_actions_in_domain(
     file_name = tmp_path / f"{file_name}.yml"
     file_name.write_text(
         f"""
-        version: "2.0"
+        version: "3.0"
         {file_name}:
         - {data_type}: test path
           steps:
@@ -408,7 +408,7 @@ def test_valid_stories_rules_default_actions(
     domain = tmp_path / "domain.yml"
     domain.write_text(
         """
-        version: "2.0"
+        version: "3.0"
         intents:
         - greet
         """
@@ -416,7 +416,7 @@ def test_valid_stories_rules_default_actions(
     file_name = tmp_path / f"{file_name}.yml"
     file_name.write_text(
         f"""
-            version: "2.0"
+            version: "3.0"
             {file_name}:
             - {data_type}: test path
               steps:
@@ -433,7 +433,7 @@ def test_valid_form_slots_in_domain(tmp_path: Path):
     domain = tmp_path / "domain.yml"
     domain.write_text(
         """
-        version: "2.0"
+        version: "3.0"
         forms:
           name_form:
             required_slots:
@@ -460,7 +460,7 @@ def test_verify_slot_mappings_mapping_active_loop_not_in_forms(tmp_path: Path):
     slot_name = "some_slot"
     domain.write_text(
         f"""
-        version: "2.0"
+        version: "3.0"
         entities:
         - some_entity
         slots:
@@ -496,7 +496,7 @@ def test_verify_slot_mappings_from_trigger_intent_mapping_slot_not_in_forms(
     slot_name = "started_booking_form"
     domain.write_text(
         f"""
-        version: "2.0"
+        version: "3.0"
         intents:
         - activate_booking
         entities:
@@ -534,7 +534,7 @@ def test_verify_slot_mappings_slot_with_mapping_conditions_not_in_form(tmp_path:
     domain = tmp_path / "domain.yml"
     domain.write_text(
         """
-        version: "2.0"
+        version: "3.0"
         intents:
         - activate_booking
         entities:
@@ -575,7 +575,7 @@ def test_verify_slot_mappings_valid(tmp_path: Path):
     domain = tmp_path / "domain.yml"
     domain.write_text(
         """
-        version: "2.0"
+        version: "3.0"
         intents:
         - activate_booking
         entities:


Code review comments:
diff_hunk: @@ -26,6 +26,18 @@ to convert your data from Markdown to YAML. Please use the commands described
 
 ### Training data
 
+#### Upgrading `version` from `2.0` to `3.0`
+
+At the top of your training data files, you need to change`version: "2.0"` to `version: "3.0"`.
path: docs/docs/migration-guide.mdx
text: @author:
```suggestion
At the top of your training data files, you need to change `version: "2.0"` to `version: "3.0"`.
```