public static function propertyChange(MetadataModified $event)
 {
     $resource = $event->getResource();
     $service = ServiceManager::getServiceManager()->get(DeliveryMonitoringService::CONFIG_ID);
     $tracked = array_merge([PROPERTY_USER_FIRSTNAME, PROPERTY_USER_LASTNAME], array_map(function ($field) {
         return $field['property']->getUri();
     }, DeliveryHelper::getExtraFieldsProperties()));
     if (in_array($event->getMetadataUri(), $tracked) && $resource->hasType(new \core_kernel_classes_Class(TAO_CLASS_SUBJECT))) {
         $deliveryExecutionsData = $service->find([DeliveryMonitoringService::TEST_TAKER => $resource->getUri()], []);
         foreach ($deliveryExecutionsData as $data) {
             $data->updateData([DeliveryMonitoringService::TEST_TAKER, DeliveryMonitoringService::TEST_TAKER_FIRST_NAME, DeliveryMonitoringService::TEST_TAKER_LAST_NAME]);
             $success = $service->save($data);
             if (!$success) {
                 \common_Logger::w('monitor cache for delivery ' . $data[DeliveryMonitoringService::DELIVERY_EXECUTION_ID] . ' could not be updated. TestTaker data has not been changed');
             }
         }
     }
 }
 /**
  * @param bool $overwrite
  */
 private function addExtraFieldsValues($overwrite = false)
 {
     $user = $this->getUser();
     if ($user) {
         $fields = DeliveryHelper::getExtraFieldsProperties();
         foreach ($fields as $field) {
             $values = $user->getPropertyValues($field['property']);
             if (!empty($values) && is_array($values)) {
                 $this->addValue($field['id'], (string) $values[0], $overwrite);
             }
         }
     }
 }