diff --git a/modules/resource_planning_template/src/Form/PlanEventForm.php b/modules/resource_planning_template/src/Form/PlanEventForm.php
index 82a76c08ba64ba484e2b3c6475fae9cb16b7fb43..f0693abe6c885a5266ca92dfb0140fb5599c4c38 100644
--- a/modules/resource_planning_template/src/Form/PlanEventForm.php
+++ b/modules/resource_planning_template/src/Form/PlanEventForm.php
@@ -137,7 +137,7 @@ class PlanEventForm extends FormBase {
       $name_field = $form_state->set('num_dates', 1);
       $num_dates = 1;
     }
-    
+
     $form['dates'] = [
       '#tree' => TRUE,
       '#type' => 'fieldset',
@@ -180,7 +180,7 @@ class PlanEventForm extends FormBase {
         ],
       ];
     }
-    
+
     $form['name'] = [
       '#type' => 'textfield',
       '#title' => $this->t('Name'),
@@ -297,7 +297,7 @@ class PlanEventForm extends FormBase {
     // don't do this, the form builder will not call buildForm().
     $form_state->setRebuild();
   }
-    
+
   /**
    * {@inheritdoc}
    */
@@ -328,6 +328,13 @@ class PlanEventForm extends FormBase {
     return $response;
   }
 
+  /**
+   * Return extra data for planTemplateEvent.
+   */
+  public function getTemplateExtraData(array &$form, FormStateInterface $form_state) {
+    return [];
+  }
+
   /**
    * {@inheritdoc}
    */
@@ -336,12 +343,13 @@ class PlanEventForm extends FormBase {
     $template = EventTemplate::load($form_state->getValue('template'));
     $this->event = [];
 
-    $name = $form_state->getValue('name');    
+    $extra = $this->getTemplateExtraData($form, $form_state);
+    $name = $form_state->getValue('name');
     for ($i = 0; $i < $form_state->get('num_dates'); $i++) {
         $event_start = $form_state->getValue(['dates', 'date', $i]);
-        $this->events[] = $this->planService->planTemplateEvent($calendar, $template, $event_start, $name);
+        $this->events[] = $this->planService->planTemplateEvent($calendar, $template, $event_start, $name, $extra);
     }
-    
+
     $this->postSubmit($form, $form_state);
   }
 
@@ -350,7 +358,7 @@ class PlanEventForm extends FormBase {
    */
   protected function postSubmit(array &$form, FormStateInterface $form_state) {
 
-    foreach ($this->events as $event) {  
+    foreach ($this->events as $event) {
       $subevents = [];
       foreach ($form['extra_subevents'] as $bundle => $subevent_calendars) {
         if (!is_array($subevent_calendars) ||
@@ -392,7 +400,7 @@ class PlanEventForm extends FormBase {
         )
       );
     }
-    
+
     if ($form_state->getTriggeringElement()['#name'] == 'save_and_edit') {
       // Save redirect in storage for use in ajax form.
       $storage = $form_state->getStorage();
diff --git a/modules/resource_planning_template/src/PlanService.php b/modules/resource_planning_template/src/PlanService.php
index 64089a332738a6f09808d6e0be1dc285b2f2d9ab..2c7dc460cc040f946b4614daebeb6293131df9cc 100644
--- a/modules/resource_planning_template/src/PlanService.php
+++ b/modules/resource_planning_template/src/PlanService.php
@@ -155,13 +155,14 @@ class PlanService implements PlanServiceInterface {
   /**
    * {@inheritdoc}
    */
-  public function planTemplateEvent(CalendarInterface $calendar, EventTemplateInterface $template, DrupalDateTime $event_start, string $name) {
+  public function planTemplateEvent(CalendarInterface $calendar, EventTemplateInterface $template, DrupalDateTime $event_start, string $name, array $extra_data = []) {
     $event = $this->prepareEventWithDuration(
       $template->bundle(),
       $name,
       $calendar,
       $event_start,
-      new \DateInterval($template->get('duration')->duration)
+      new \DateInterval($template->get('duration')->duration),
+      $extra_data
     );
 
     // Copy fields from template to toplevel event.