diff --git a/src/Event/EntityUsageIntegrityApplicabilityCheckEvent.php b/src/Event/EntityUsageIntegrityApplicabilityCheckEvent.php
new file mode 100644
index 0000000..b97fad7
--- /dev/null
+++ b/src/Event/EntityUsageIntegrityApplicabilityCheckEvent.php
@@ -0,0 +1,73 @@
+<?php
+
+namespace Drupal\entity_usage_integrity\Event;
+
+use Drupal\Core\Form\FormStateInterface;
+use Symfony\Component\EventDispatcher\Event;
+
+/**
+ * Defines an entity usage integrity applicability check event.
+ */
+class EntityUsageIntegrityApplicabilityCheckEvent extends Event {
+
+  /**
+   * The form state.
+   *
+   * @var \Drupal\Core\Form\FormStateInterface
+   */
+  protected $formState;
+
+  /**
+   * The applicability status.
+   *
+   * @var bool
+   */
+  protected $isApplicable;
+
+  /**
+   * Constructs an applicability check event object.
+   *
+   * @param \Drupal\Core\Form\FormStateInterface $form_state
+   *   The form state.
+   * @param bool $is_applicable
+   *   The default applicability status. TRUE if an entity usage integrity check
+   *   must be performed on the form, FALSE otherwise.
+   */
+  public function __construct(FormStateInterface $form_state, $is_applicable) {
+    $this->formState = $form_state;
+    $this->isApplicable = $is_applicable;
+  }
+
+  /**
+   * Gets the form state.
+   *
+   * @return \Drupal\Core\Form\FormStateInterface
+   *   The form state.
+   */
+  public function getFormState() {
+    return $this->formState;
+  }
+
+  /**
+   * Check if the form is applicable for an integrity check.
+   *
+   * @return bool
+   *   TRUE if an entity usage integrity check must be performed on the form,
+   *   FALSE otherwise.
+   */
+  public function isApplicable() {
+    return $this->isApplicable;
+  }
+
+  /**
+   * Sets whether an entity usage integrity check must be performed on the form.
+   *
+   * @param bool $is_applicable
+   *   TRUE if an entity usage integrity check must be performed on the form,
+   *   FALSE otherwise.
+   */
+  public function setApplicable($is_applicable) {
+    $this->isApplicable = $is_applicable;
+  }
+
+}
diff --git a/src/Event/EntityUsageIntegrityEvents.php b/src/Event/EntityUsageIntegrityEvents.php
new file mode 100644
index 0000000..c837b9c
--- /dev/null
+++ b/src/Event/EntityUsageIntegrityEvents.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace Drupal\entity_usage_integrity\Event;
+
+/**
+ * Provides a list of events dispatched by the entity_usage_integrity module.
+ */
+final class EntityUsageIntegrityEvents {
+
+  /**
+   * Name of the event dispatched when integrity check applicability is checked.
+   *
+   * Allows modules to change the applicability status on a specific form.
+   *
+   * @see \Drupal\entity_usage_integrity\FormIntegrityValidation\ViewedEditForm::isApplicable()
+   * @see \Drupal\entity_usage_integrity\FormIntegrityValidation\ViewedDeleteForm::isApplicable()
+   */
+  const APPLICABILITY_CHECK = 'entity_usage_integrity.applicability_check';
+
+}
diff --git a/src/FormIntegrityValidation/ViewedDeleteForm.php b/src/FormIntegrityValidation/ViewedDeleteForm.php
index de35ce4..e088f62 100644
--- a/src/FormIntegrityValidation/ViewedDeleteForm.php
+++ b/src/FormIntegrityValidation/ViewedDeleteForm.php
@@ -10,11 +10,14 @@ use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Messenger\MessengerInterface;
 use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Drupal\entity_usage_integrity\EntityUsageIntegrityResource\RelationCollections;
+use Drupal\entity_usage_integrity\Event\EntityUsageIntegrityApplicabilityCheckEvent;
+use Drupal\entity_usage_integrity\Event\EntityUsageIntegrityEvents;
 use Drupal\entity_usage_integrity\Form\IntegritySettingsForm;
 use Drupal\entity_usage_integrity\IntegrityValidationContext;
 use Drupal\entity_usage_integrity\IntegrityValidationTrait;
 use Drupal\entity_usage_integrity\IntegrityValidator;
 use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\EventDispatcher\EventDispatcherInterface;
 
 /**
  * Provide integrity validation on viewed content entity delete form.
@@ -44,6 +47,13 @@ final class ViewedDeleteForm implements ContainerInjectionInterface {
    */
   protected $messenger;
 
+  /**
+   * The event dispatcher.
+   *
+   * @var \Symfony\Component\EventDispatcher\EventDispatcherInterface
+   */
+  protected $eventDispatcher;
+
   /**
    * Create ViewedDeleteForm object.
    *
@@ -55,10 +65,13 @@ final class ViewedDeleteForm implements ContainerInjectionInterface {
    *   The messenger service.
    * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
    *   The configuration factory.
+   * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher
+   *   The event dispatcher.
    */
-  public function __construct(IntegrityValidator $integrity_validator, EntityTypeManagerInterface $entity_type_manager, MessengerInterface $messenger, ConfigFactoryInterface $config_factory) {
+  public function __construct(IntegrityValidator $integrity_validator, EntityTypeManagerInterface $entity_type_manager, MessengerInterface $messenger, ConfigFactoryInterface $config_factory, EventDispatcherInterface $event_dispatcher) {
     $this->entityTypeManager = $entity_type_manager;
     $this->messenger = $messenger;
+    $this->eventDispatcher = $event_dispatcher;
     // Integrity validation trait init.
     $this
       ->setIntegrityValidator($integrity_validator)
@@ -74,7 +87,8 @@ final class ViewedDeleteForm implements ContainerInjectionInterface {
       $container->get('entity_usage_integrity.validator'),
       $container->get('entity_type.manager'),
       $container->get('messenger'),
-      $container->get('config.factory')
+      $container->get('config.factory'),
+      $container->get('event_dispatcher')
     );
   }
 
@@ -128,12 +142,19 @@ final class ViewedDeleteForm implements ContainerInjectionInterface {
    * @return bool
    *   TRUE if alteration applies, FALSE otherwise.
    */
-  protected static function isApplicable(FormStateInterface $form_state) {
+  protected function isApplicable(FormStateInterface $form_state) {
     $form_object = $form_state->getFormObject();
-    if ($form_object instanceof ContentEntityFormInterface) {
-      return $form_object->getOperation() === 'delete';
+
+    $is_applicable = $form_object instanceof ContentEntityFormInterface
+      && $form_object->getOperation() === 'delete';
+
+    if ($is_applicable) {
+      $event = new EntityUsageIntegrityApplicabilityCheckEvent($form_state, $is_applicable);
+      $this->eventDispatcher->dispatch(EntityUsageIntegrityEvents::APPLICABILITY_CHECK, $event);
+      $is_applicable = $event->isApplicable();
     }
-    return FALSE;
+
+    return $is_applicable;
   }
 
   /**
diff --git a/src/FormIntegrityValidation/ViewedEditForm.php b/src/FormIntegrityValidation/ViewedEditForm.php
index 21a2aa9..5f303a0 100644
--- a/src/FormIntegrityValidation/ViewedEditForm.php
+++ b/src/FormIntegrityValidation/ViewedEditForm.php
@@ -10,10 +10,13 @@ use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Messenger\MessengerInterface;
 use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Drupal\entity_usage_integrity\EntityUsageIntegrityResource\RelationCollections;
+use Drupal\entity_usage_integrity\Event\EntityUsageIntegrityApplicabilityCheckEvent;
+use Drupal\entity_usage_integrity\Event\EntityUsageIntegrityEvents;
 use Drupal\entity_usage_integrity\IntegrityValidationContext;
 use Drupal\entity_usage_integrity\IntegrityValidationTrait;
 use Drupal\entity_usage_integrity\IntegrityValidator;
 use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\EventDispatcher\EventDispatcherInterface;
 use Symfony\Component\HttpFoundation\RequestStack;
 
 /**
@@ -47,6 +50,13 @@ final class ViewedEditForm implements ContainerInjectionInterface {
    */
   protected $request;
 
+  /**
+   * The event dispatcher.
+   *
+   * @var \Symfony\Component\EventDispatcher\EventDispatcherInterface
+   */
+  protected $eventDispatcher;
+
   /**
    * Create EntityUsageIntegrityForm object.
    *
@@ -58,11 +68,14 @@ final class ViewedEditForm implements ContainerInjectionInterface {
    *   The messenger service.
    * @param \Symfony\Component\HttpFoundation\RequestStack $request
    *   The request stack.
+   * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher
+   *   The event dispatcher.
    */
-  public function __construct(IntegrityValidator $integrity_validator, EntityTypeManagerInterface $entity_type_manager, MessengerInterface $messenger, RequestStack $request) {
+  public function __construct(IntegrityValidator $integrity_validator, EntityTypeManagerInterface $entity_type_manager, MessengerInterface $messenger, RequestStack $request, EventDispatcherInterface $event_dispatcher) {
     $this->entityTypeManager = $entity_type_manager;
     $this->messenger = $messenger;
     $this->request = $request->getCurrentRequest();
+    $this->eventDispatcher = $event_dispatcher;
     // Integrity validation trait init.
     $this
       ->setIntegrityValidator($integrity_validator)
@@ -77,7 +90,8 @@ final class ViewedEditForm implements ContainerInjectionInterface {
       $container->get('entity_usage_integrity.validator'),
       $container->get('entity_type.manager'),
       $container->get('messenger'),
-      $container->get('request_stack')
+      $container->get('request_stack'),
+      $container->get('event_dispatcher')
     );
   }
 
@@ -136,10 +150,18 @@ final class ViewedEditForm implements ContainerInjectionInterface {
    */
   protected function isApplicable(FormStateInterface $form_state) {
     $form_object = $form_state->getFormObject();
-    if ($form_object instanceof ContentEntityFormInterface) {
-      return in_array($form_object->getOperation(), ['edit', 'default']) && $this->request->getMethod() === "GET" && !$form_state->getFormObject()->getEntity()->isNew();
+    $is_applicable = $form_object instanceof ContentEntityFormInterface
+      && in_array($form_object->getOperation(), ['edit', 'default'], TRUE)
+      && $this->request->getMethod() === 'GET'
+      && !$form_state->getFormObject()->getEntity()->isNew();
+
+    if ($is_applicable) {
+      $event = new EntityUsageIntegrityApplicabilityCheckEvent($form_state, $is_applicable);
+      $this->eventDispatcher->dispatch(EntityUsageIntegrityEvents::APPLICABILITY_CHECK, $event);
+      $is_applicable = $event->isApplicable();
     }
-    return FALSE;
+
+    return $is_applicable;
   }
 
   /**
