diff --git a/scripts/prepare_inputs.py b/scripts/prepare_inputs.py
index 426902a014801bd3ddc677d9b6f01d644f8e8334..e47fa3d99d152f04ffaf65e2b1c03ab971179ace 100755
--- a/scripts/prepare_inputs.py
+++ b/scripts/prepare_inputs.py
@@ -678,9 +678,10 @@ def main(args):
   salmon_indexes: "{salmon_indexes}"
   star_indexes: "{star_indexes}"
   alfa_indexes: "{alfa_indexes}"
-  report_description: "{args.description}"
-  report_logo: "{args.logo}"
-  report_url: "{args.url}"
+  optional:
+    report_description: "{args.description}"
+    report_logo: "{args.logo}"
+    report_url: "{args.url}"
 ...
 '''
     args.config_file.write(config_file_content)
diff --git a/tests/input_files/config.mutliple_lanes.yml b/tests/input_files/config.mutliple_lanes.yml
index ada2c6b2d0066c69e8f62d4fe8afa38e219fd750..016692d73b3672a1f5aee4fe7dd84c8bc6fc6556 100644
--- a/tests/input_files/config.mutliple_lanes.yml
+++ b/tests/input_files/config.mutliple_lanes.yml
@@ -1,15 +1,14 @@
 ---
   samples: "../input_files/samples.multiple_lanes.tsv"
-  rule_config: "../input_files/rule_config.yaml"
   output_dir: "results"
   log_dir: "logs"
   kallisto_indexes: "results/kallisto_indexes"
   salmon_indexes: "results/salmon_indexes"
   star_indexes: "results/star_indexes"
   alfa_indexes: "results/alfa_indexes"
-  report_description: "No description provided by user"
-  report_logo: "../../images/logo.128px.png"
-  report_url: "https://zavolan.biozentrum.unibas.ch/"
-  author_name: "NA"
-  author_email: "NA"
+  optional:
+    rule_config: "../input_files/rule_config.yaml"
+    report_description: "No description provided by user"
+    report_logo: "../../images/logo.128px.png"
+    report_url: "https://zavolan.biozentrum.unibas.ch/"
 ...
diff --git a/tests/input_files/config.yaml b/tests/input_files/config.yaml
index f3cb261f4dea3e5ab0016ab1ee4138c0391f4aaa..54edf9cf6b6dcb96f9b2a2ac4e23416da22ac7c4 100644
--- a/tests/input_files/config.yaml
+++ b/tests/input_files/config.yaml
@@ -1,7 +1,6 @@
 ---
   # Required fields
   samples: "../input_files/samples.tsv"
-  rule_config: "../input_files/rule_config.yaml"
   output_dir: "results"
   log_dir: "logs"
   kallisto_indexes: "results/kallisto_indexes"
@@ -10,6 +9,7 @@
   alfa_indexes: "results/alfa_indexes"
   # Optional fields
   optional:
+    rule_config: "../input_files/rule_config.yaml"
     report_description: "No description provided by user"
     report_logo: "../../images/logo.128px.png"
     report_url: "https://zavolan.biozentrum.unibas.ch/"
diff --git a/tests/input_files/config_alfa.yaml b/tests/input_files/config_alfa.yaml
index 60c1e0a5cd3f46eda52f79f5faa55ac16981199a..06decc6478478c2683427c47e94f382d155336fd 100644
--- a/tests/input_files/config_alfa.yaml
+++ b/tests/input_files/config_alfa.yaml
@@ -1,14 +1,14 @@
 ---
   samples: "../input_files/samples_alfa.tsv"
-  output_dir: "results/"
-  log_dir: "logs/"
-  kallisto_indexes: "results/kallisto_indexes/"
-  salmon_indexes: "results/salmon_indexes/"
-  star_indexes: "results/star_indexes/"
-  alfa_indexes: "results/alfa_indexes/"
-  report_description: "No description provided by user"
-  report_logo: "../../images/logo.128px.png"
-  report_url: "https://zavolan.biozentrum.unibas.ch/"
-  author_name: "NA"
-  author_email: "NA"
+  output_dir: "results"
+  log_dir: "logs"
+  kallisto_indexes: "results/kallisto_indexes"
+  salmon_indexes: "results/salmon_indexes"
+  star_indexes: "results/star_indexes"
+  alfa_indexes: "results/alfa_indexes"
+  optional:
+    rule_config: "../input_files/rule_config.yaml"
+    report_description: "No description provided by user"
+    report_logo: "../../images/logo.128px.png"
+    report_url: "https://zavolan.biozentrum.unibas.ch/"
 ...
diff --git a/tests/test_scripts_prepare_inputs_table/expected_output.md5 b/tests/test_scripts_prepare_inputs_table/expected_output.md5
index 53afed559996a1e89802ff5bb9307351b8004fdf..dc555cc912f3f33575fb70f82af3c59bbd52f3c1 100644
--- a/tests/test_scripts_prepare_inputs_table/expected_output.md5
+++ b/tests/test_scripts_prepare_inputs_table/expected_output.md5
@@ -1,2 +1,2 @@
-40bd0f0fcecdd0d9bc932f63c2811478  config.yaml
+90e90bb60335a2e17cd40cbf058af7b7  config.yaml
 c8dcc5a203e9046806c4090525960151  samples.tsv
diff --git a/workflow/Snakefile b/workflow/Snakefile
index b5e295d6cd3a6c0498671004e229b9ee5f50fc46..e5d270b8957a3e7c2fdf9314cd9950c8855a8507 100644
--- a/workflow/Snakefile
+++ b/workflow/Snakefile
@@ -49,13 +49,13 @@ for optkey, value in template_config['optional'].items():
 
 
 # Parse YAML rule config file
-if 'rule_config' in config and config['rule_config']:
+if 'rule_config' in config['optional'] and config['optional']['rule_config']:
     try:
-        with open(config['rule_config']) as _file:
+        with open(config['optional']['rule_config']) as _file:
             rule_config = yaml.safe_load(_file)
-        logger.info(f"Loaded rule_config from {config['rule_config']}.")
+        logger.info(f"Loaded rule_config from {config['optional']['rule_config']}.")
     except FileNotFoundError:
-        logger.error(f"No rule config file found at {config['rule_config']}. Either provide file or remove rule_config parameter from config.yaml! ")
+        logger.error(f"No rule config file found at {config['optional']['rule_config']}. Either provide file or remove rule_config parameter from config.yaml! ")
         raise
 else:
     rule_config = {}