Platform Explorer / Nuxeo Platform 2021.52

Extension point listener

Documentation

Extension point defining event listeners.

An event listener describes some Java code that can be executed synchronously or asynchronously when an event is fired by Nuxeo code.

Example listener:

    <listener async="false"
        class="org.nuxeo.ecm.platform.dublincore.listener.DublinCoreListener"
        enabled="true" name="mylistener" postCommit="false"
        priority="50" retryCount="1">
        <event>documentCreated</event>
        <event>documentModified</event>
    </listener>

The events listed are those for which the listener will be called. If there are none, the listener is called for all events, but this is strongly discouraged for performance reasons.

Listeners belong to one of three categories:

If postCommit=false then the listener is purely synchronous (also called "inline") and executed in the same thread and transaction as the code firing the event, as a regular method call. The class must implement org.nuxeo.ecm.core.event.EventListener, which receives events one at a time.

If postCommit=true and async=true then the listener is purely asynchronous and executed at an arbitrary later point in time (but after the original transaction is committed), in its own thread and transaction. It may be retried if a ConcurrentUpdateException is detected. The listener is executed asynchronously by the WorkManager via a Work instance whose category (which determines the Work queue used) is the listener's name. The class must implement org.nuxeo.ecm.core.event.PostCommitEventListener, which receives a bundle of all the events raised by the original transaction.

If postCommit=true and async=false then the listener is executed synchronously immediately after the original transaction is committed, but in a separate transaction. It is not executed if the original transaction does a rollback. All listeners in this category are executed one after the other (in priority order), and only after they are all done does the main thread continue execution. (However if one of the listeners takes too long it is left to run purely asynchronously and the other listeners in this category are processed.) The class must implement org.nuxeo.ecm.core.event.PostCommitEventListener, which receives a bundle of all the events raised by the original transaction.

The priority gives a global ordering of all the listeners in the same category executed for a given event. The default is 0.

The retryCount specifies how many times a purely asynchronous listener may retry execution if it resulted in a ConcurrentUpdateException. The default is 1.

Contribution Descriptors

  • Class: org.nuxeo.ecm.core.event.impl.EventListenerDescriptor

Existing Contributions

Contributions are presented in the same order as the registration order on this extension point. This order is displayed before the contribution name, in brackets.

  • nuxeo-core-event-2021.52.8.jar /OSGI-INF/EventService.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener async="false" class="org.nuxeo.ecm.core.event.stream.DomainEventProducerListener" name="domainEventListener" priority="500"/>
      </extension>
  • nuxeo-apidoc-repo-2021.2.2.jar /OSGI-INF/listener-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <documentation>
          These contributions are used for latest distribution flag update and XML attributes extractions in
          extension points.
        </documentation>
    
        <listener async="false" class="org.nuxeo.apidoc.listener.LatestDistributionsListener" name="latestDistributionsListener" postCommit="false">
          <documentation>
            Updates latest distribution flag.
          </documentation>
          <event>aboutToCreate</event>
          <event>beforeDocumentModification</event>
        </listener>
    
        <listener async="false" class="org.nuxeo.apidoc.listener.AttributesExtractorStater" name="AttributesExtractorStater" postCommit="false">
          <documentation>
            Listener in charge of triggering AttributesExtractorScheduler.
          </documentation>
          <event>aboutToCreate</event>
          <event>beforeDocumentModification</event>
        </listener>
    
        <listener async="false" class="org.nuxeo.apidoc.listener.AttributesExtractorScheduler" name="AttributesExtractorScheduler" postCommit="false" priority="20">
          <description>
            Schedules a work for XML attributes extraction.
          </description>
          <event>documentCreated</event>
          <event>documentModified</event>
        </listener>
      </extension>
  • nuxeo-arender-core-2021.4.8.jar /OSGI-INF/nuxeo-arender-component.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener class="com.nuxeo.ecm.arender.core.ARenderLogoutListener" name="arenderLogoutListener">
          <event>logout</event>
        </listener>
      </extension>
  • nuxeo-binary-metadata-2021.52.8.jar /OSGI-INF/binary-metadata-service.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener class="org.nuxeo.binary.metadata.internals.listeners.BinaryMetadataSyncListener" name="binaryMetadataSyncListener" priority="100">
          <event>aboutToCreate</event>
          <event>documentCreated</event>
          <event>beforeDocumentModification</event>
        </listener>
      </extension>
  • nuxeo-coldstorage-2021.3.2.jar /OSGI-INF/coldstorage-events-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener async="true" class="org.nuxeo.coldstorage.events.CheckColdStorageContentAvailabilityListener" name="checkColdStorageContentAvailability">
          <event>checkColdStorageContentAvailability</event>
        </listener>
        <listener class="org.nuxeo.coldstorage.events.PreventColdStorageUpdateListener" name="preventColdStorageUpdateListener" priority="0">
          <event>beforeDocumentModification</event>
        </listener>
        <!-- StreamAuditEventListener has a priority of 500, less allows to be evaluated earlier -->
        <listener class="org.nuxeo.coldstorage.events.DownloadColdDocumentListener" name="downloadColdDocumentListener" priority="400">
          <event>download</event>
        </listener>
        <!-- UpdateThumbnailListener has a priority of 999, more allows to be evaluated later -->
        <listener class="org.nuxeo.coldstorage.events.CheckAlreadyInColdStorageListener" name="checkAlreadyInColdStorageListener" priority="900">
          <event>documentModified</event>
          <event>documentCreated</event>
        </listener>
      </extension>
  • nuxeo-core-2021.52.8.jar /OSGI-INF/CoreExtensions.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <listener class="org.nuxeo.ecm.core.model.EmptyNameFixer" name="emptyNameFixer" priority="1000">
          <event>aboutToImport</event>
          <event>aboutToCreate</event>
          <event>aboutToMove</event>
        </listener>
    
        <listener class="org.nuxeo.ecm.core.model.DuplicatedNameFixer" name="duplicatedNameFixer" priority="2000">
          <event>aboutToImport</event>
          <event>aboutToCreate</event>
          <event>aboutToMove</event>
        </listener>
    
      </extension>
  • nuxeo-core-2021.52.8.jar /OSGI-INF/lifecycle-listener-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <documentation>
          Listener for life cycle change events.
    
          If event occurs on a folder, it will recurse on children to perform the
          same transition if possible.
    
          If the transition event is about marking documents as "deleted", and a
          child cannot perform the transition, it will be removed.
    
          Undelete transitions are not recursed on the children, however a special
          documentUndeleted event has the same role and is processed by this listener.
        </documentation>
        <listener async="true" class="org.nuxeo.ecm.core.lifecycle.event.BulkLifeCycleChangeListener" name="bulkLifeCycleChangeListener" postCommit="true">
          <event>lifecycle_transition_event</event>
          <event>documentUndeleted</event>
          <event>documentCreatedByCopy</event>
        </listener>
    
      </extension>
  • nuxeo-core-2021.52.8.jar /OSGI-INF/orphanVersionRemoval-listener-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <documentation>
          Deprecated since 2021.44 there is now an orphan versions incremental GC (StreamDocumentGC).
          Listener used by DefaultVersionRemovalPolicy to remove the Orphan versions from repository in an async manner.
        </documentation>
        <listener async="true" class="org.nuxeo.ecm.core.versioning.OrphanVersionRemoverListener" enabled="false" name="orphanVersionRemoverListener" postCommit="true">
          <event>orphan_versions_to_remove</event>
        </listener>
    
      </extension>
  • nuxeo-core-2021.52.8.jar /OSGI-INF/uidgenerator-service.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <documentation>
          Listener to automatically generate uids for documents according to the registered uid generators.
        </documentation>
        <listener async="false" class="org.nuxeo.ecm.core.uidgen.DocUIDGeneratorListener" name="uidlistener" postCommit="false" priority="10">
          <event>documentCreated</event>
        </listener>
      </extension>
  • nuxeo-core-2021.52.8.jar /OSGI-INF/scheduler-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener async="true" class="org.nuxeo.ecm.core.security.UpdateACEStatusListener" name="updateACEStatus">
          <event>updateACEStatus</event>
        </listener>
      </extension>
  • nuxeo-core-2021.52.8.jar /OSGI-INF/retention-and-hold-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener async="true" class="org.nuxeo.ecm.core.security.RetentionExpiredFinderListener" name="findRetentionExpired">
          <event>findRetentionExpired</event>
        </listener>
      </extension>
  • nuxeo-core-2021.52.8.jar /OSGI-INF/asyncdigest-listener-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener async="true" class="org.nuxeo.ecm.core.blob.BlobDeleteListener" name="blobManagerDeleteMarkedBlobsListener" postCommit="true">
          <event>blobManagerDeleteMarkedBlobsEvent</event>
        </listener>
      </extension>
  • nuxeo-core-cache-2021.52.8.jar /OSGI-INF/transientstore-service.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener async="false" class="org.nuxeo.ecm.core.transientstore.TransientStorageGCTrigger" name="transientStoreGCTrigger" postCommit="false">
          <event>transientStoreGCStart</event>
        </listener>
      </extension>
  • nuxeo-core-storage-sql-2021.52.8.jar /OSGI-INF/repo-softdelete-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener async="false" class="org.nuxeo.ecm.core.storage.sql.SoftDeleteCleanupListener" name="softDeleteCleanup">
          <event>softDeleteCleanup</event>
        </listener>
      </extension>
  • nuxeo-drive-core-2021.52.8.jar /OSGI-INF/nuxeodrive-listeners.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <documentation>
          Notify the NuxeoDriveManager service to invalidate
          it's cache when a document is deleted (physically or just the
          trash).
    
          @author Olivier Grisel
        </documentation>
    
        <listener async="false" class="org.nuxeo.drive.listener.NuxeoDriveCacheInvalidationListener" name="nuxeoDriveCacheInvalidationListener" postCommit="false" priority="300">
          <event>lifecycle_transition_event</event>
          <event>documentTrashed</event>
          <event>documentUntrashed</event>
          <event>documentRemoved</event>
          <event>documentSecurityUpdated</event>
          <event>addedToCollection</event>
          <event>removedFromCollection</event>
        </listener>
    
        <documentation>
          Handle document removal or root unregistration in
          order to be able to
          populate the audit log and hence compute
          consistent change
          summaries for each user.
    
          @author Olivier Grisel
        </documentation>
        <listener async="false" class="org.nuxeo.drive.listener.NuxeoDriveFileSystemDeletionListener" name="nuxeoDriveFileSystemDeletionListener" postCommit="false" priority="200">
          <event>beforeDocumentModification</event>
          <event>aboutToMove</event>
          <event>lifecycle_transition_event</event>
          <event>documentTrashed</event>
          <event>aboutToRemove</event>
          <event>beforeDocumentSecurityModification</event>
          <event>aboutToUnregisterRoot</event>
          <event>beforeRemovedFromCollection</event>
          <event>groupUpdated</event>
        </listener>
    
        <documentation>
          Populate the audit log with virtual events generated by the nuxeoDriveFileSystemDeletionListener.
    
          @author Antoine Taillefer
        </documentation>
        <listener async="true" class="org.nuxeo.drive.listener.NuxeoDriveVirtualEventLogger" name="nuxeoDriveVirtualEventLoggerListener" postCommit="true"/>
    
        <documentation>
          Handle group change events fired by the UserManager.
    
          @author Antoine Taillefer
        </documentation>
        <listener async="true" class="org.nuxeo.drive.listener.NuxeoDriveGroupUpdateListener" name="nuxeoDriveGroupUpdateListener" postCommit="true">
          <event>group_created</event>
          <event>group_deleted</event>
          <event>group_modified</event>
        </listener>
    
        <documentation>
          Reset synchronization root registrations on a copied document and its children.
        </documentation>
        <listener async="false" class="org.nuxeo.drive.listener.NuxeoDriveSyncRootCopyListener" name="nuxeoDriveSyncRootCopyListener" postCommit="false">
          <event>documentCreatedByCopy</event>
        </listener>
    
        <documentation>
          Reset synchronization root registrations on a versioned document.
        </documentation>
        <listener async="false" class="org.nuxeo.drive.listener.NuxeoDriveSyncRootVersioningListener" name="nuxeoDriveSyncRootVersioningListener" postCommit="false">
          <event>documentCheckedIn</event>
        </listener>
    
      </extension>
  • nuxeo-elasticsearch-core-2021.52.8.jar /OSGI-INF/listener-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <listener async="false" class="org.nuxeo.elasticsearch.listener.ElasticSearchInlineListener" enabled="true" name="elasticSearchInlineListener" postCommit="false" priority="500">
          <event>beforeDocumentModification</event>
          <event>documentCreated</event>
          <event>documentImported</event>
          <event>documentCreatedByCopy</event>
          <event>documentMoved</event>
          <event>lifecycle_transition_event</event>
          <event>documentRestored</event>
          <event>documentSecurityUpdated</event>
          <event>documentRemoved</event>
          <event>sessionSaved</event>
          <event>aboutToCheckIn</event>
          <event>documentCheckedOut</event>
          <event>documentCheckedIn</event>
          <event>binaryTextUpdated</event>
          <event>documentTagUpdated</event>
          <event>documentProxyUpdated</event>
          <event>childrenOrderChanged</event>
          <event>documentTrashed</event>
          <event>documentUntrashed</event>
          <event>afterMakeRecord</event>
          <event>afterSetRetention</event>
          <event>afterExtendRetention</event>
          <event>afterSetLegalHold</event>
          <event>afterRemoveLegalHold</event>
        </listener>
    
      </extension>
  • nuxeo-liveconnect-2021.52.8.jar /OSGI-INF/liveconnect-scheduler-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener class="org.nuxeo.ecm.liveconnect.update.listener.BlobProviderDocumentsUpdateListener" name="blobProviderDocumentUpdate">
          <event>blobProviderDocumentUpdateEvent</event>
        </listener>
      </extension>
  • nuxeo-multi-tenant-core-2021.52.8.jar /OSGI-INF/listeners-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <listener async="false" class="org.nuxeo.ecm.multi.tenant.MultiTenantListener" name="multiTenantListener" postCommit="false" priority="150">
          <event>documentCreated</event>
          <event>documentCreatedByCopy</event>
          <event>documentRemoved</event>
          <event>lifecycle_transition_event</event>
          <event>documentTrashed</event>
          <event>documentUntrashed</event>
        </listener>
    
        <listener async="false" class="org.nuxeo.ecm.multi.tenant.TenantAdministratorsListener" name="tenantAdministratorsListener" postCommit="false" priority="100">
          <event>beforeDocumentModification</event>
        </listener>
    
        <listener async="false" class="org.nuxeo.ecm.multi.tenant.acl.ACLUpdateListener" name="multiTenantACLListener" postCommit="false" priority="150">
          <event>beforeDocumentSecurityModification</event>
        </listener>
    
      </extension>
  • nuxeo-permissions-2021.52.8.jar /OSGI-INF/listeners-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <listener async="false" class="org.nuxeo.ecm.permissions.PermissionListener" name="permissionListener" postCommit="false">
          <event>documentSecurityUpdated</event>
        </listener>
    
        <listener async="true" class="org.nuxeo.ecm.permissions.PermissionGarbageCollectorListener" enabled="false" name="permissionGarbageCollectorListener" postCommit="true">
          <event>documentRemoved</event>
        </listener>
    
        <listener async="true" class="org.nuxeo.ecm.permissions.PermissionGrantedNotificationListener" name="permissionNotificationListener" postCommit="true">
          <event>permissionNotification</event>
        </listener>
    
        <listener async="true" class="org.nuxeo.ecm.permissions.ACEStatusUpdatedListener" name="aceStatusUpdatedListener" postCommit="true">
          <event>ACEStatusUpdated</event>
        </listener>
    
      </extension>
  • nuxeo-platform-3d-2021.52.8.jar /OSGI-INF/listeners-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener async="false" class="org.nuxeo.ecm.platform.threed.listener.ThreeDBatchGenerationListener" name="threeDBatchGenerationListener" postCommit="false" priority="20">
          <event>documentCreated</event>
          <event>documentModified</event>
        </listener>
      </extension>
  • nuxeo-platform-3d-2021.52.8.jar /OSGI-INF/listeners-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener async="false" class="org.nuxeo.ecm.platform.threed.listener.ThreeDBatchCleanerListener" name="threeDBatchCleanerListener" postCommit="false" priority="20">
          <event>aboutToCreate</event>
          <event>beforeDocumentModification</event>
        </listener>
      </extension>
  • nuxeo-arender-core-2021.4.8.jar /OSGI-INF/nuxeo-arender-content-redaction-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener class="com.nuxeo.ecm.arender.core.ARenderRedactListener" name="annotationRedactListener" priority="0">
          <event>commentAdded</event>
          <event>commentRemoved</event>
        </listener>
      </extension>
  • nuxeo-platform-collections-core-2021.52.8.jar /OSGI-INF/collection-event-handlers-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener class="org.nuxeo.ecm.collections.core.listener.DuplicatedCollectionListener" name="duplicatedCollectionListener">
          <event>documentCreatedByCopy</event>
          <event>documentCheckedIn</event>
        </listener>
        <listener class="org.nuxeo.ecm.collections.core.listener.RemovedCollectionListener" name="removedCollectionListener">
          <event>documentRemoved</event>
        </listener>
        <listener class="org.nuxeo.ecm.collections.core.listener.RestoredCollectionListener" name="restoredCollectionListener">
          <event>beforeRestoringDocument</event>
        </listener>
      </extension>
  • nuxeo-platform-comment-2021.52.8.jar /OSGI-INF/comment-listener-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <listener async="false" class="org.nuxeo.ecm.platform.comment.listener.CommentRemovedEventListener" name="commentListener" postCommit="false">
          <event>documentRemoved</event>
        </listener>
    
        <listener async="true" class="org.nuxeo.ecm.platform.comment.listener.DocumentRemovedCommentEventListener" name="docRemovedCommentListener" postCommit="true">
          <event>documentRemoved</event>
        </listener>
    
        <listener async="true" class="org.nuxeo.ecm.platform.comment.listener.CheckedInCommentListener" name="checkedInCommentListener" postCommit="true">
          <event>documentCheckedIn</event>
        </listener>
    
      </extension>
  • nuxeo-platform-content-template-manager-2021.52.8.jar /OSGI-INF/content-template-listener.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <documentation>
          Listen for Core event DOCUMENT_UPDATED and DOCUMENT_CREATED and call the
          DublinCoreStorageService.
    
          @author Thierry Delprat (td@nuxeo.com)
        </documentation>
    
        <listener async="false" class="org.nuxeo.ecm.platform.content.template.listener.ContentCreationListener" name="templateCreator" postCommit="false" priority="100">
        </listener>
      </extension>
  • nuxeo-platform-dublincore-2021.52.8.jar /OSGI-INF/nxdublincore-service.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <documentation>
          Listen for Core event DOCUMENT_UPDATED and DOCUMENT_CREATED and call the
          DublinCoreStorageService.
    
          @author Thierry Delprat (td@nuxeo.com)
        </documentation>
    
        <listener async="false" class="org.nuxeo.ecm.platform.dublincore.listener.DublinCoreListener" name="dclistener" postCommit="false" priority="120">
          <event>aboutToCreate</event>
          <event>beforeDocumentModification</event>
          <event>documentPublished</event>
          <event>lifecycle_transition_event</event>
          <event>documentCreatedByCopy</event>
          <event>documentTrashed</event>
          <event>documentUntrashed</event>
        </listener>
    
      </extension>
  • nuxeo-platform-filemanager-2021.52.8.jar /OSGI-INF/filemanager-digestcomputer-event-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <documentation>
          Listen for Core event DOCUMENT_UPDATED and DOCUMENT_CREATED and generates digests
          for blobs according to filemanager configuration.
          @author Thierry Delprat (td@nuxeo.com)
         </documentation>
        <listener async="false" class="org.nuxeo.ecm.platform.filemanager.core.listener.DigestComputer" name="digestListener" postCommit="false" priority="140">
          <event>aboutToCreate</event>
          <event>beforeDocumentModification</event>
        </listener>
      </extension>
  • nuxeo-platform-filemanager-2021.52.8.jar /OSGI-INF/filemanager-iconupdater-event-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <documentation>
          Computes the mimetype of dirty blob fields and updates the document icon if necessary.
        </documentation>
        <listener async="false" class="org.nuxeo.ecm.platform.filemanager.core.listener.MimetypeIconUpdater" name="mimetypeIconUpdater" postCommit="false" priority="120">
          <event>aboutToCreate</event>
          <event>beforeDocumentModification</event>
          <event>aboutToImport</event>
        </listener>
      </extension>
  • nuxeo-platform-filemanager-2021.52.8.jar /OSGI-INF/filemanager-unicity-event-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <documentation>
          Listen for Core event DOCUMENT_UPDATED and DOCUMENT_CREATED and check for existing duplicated blobs in the db
         </documentation>
        <listener async="true" class="org.nuxeo.ecm.platform.filemanager.core.listener.AsynchronousUnicityCheckListener" name="unicityListener" postCommit="true" priority="140">
          <event>documentCreated</event>
          <event>documentModified</event>
        </listener>
      </extension>
  • nuxeo-platform-htmlsanitizer-2021.52.8.jar /OSGI-INF/htmlsanitizer-service.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <description>
          Listener that runs (very early) the HTML Sanitizer.
        </description>
        <listener async="false" class="org.nuxeo.ecm.platform.htmlsanitizer.HtmlSanitizerListener" name="htmlsanitizerlistener" postCommit="false" priority="-10">
        </listener>
      </extension>
  • nuxeo-platform-imaging-core-2021.52.8.jar /OSGI-INF/listeners-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <listener async="false" class="org.nuxeo.ecm.platform.picture.listener.PictureChangedListener" name="pictureChangedListener" postCommit="false" priority="20">
          <event>aboutToCreate</event>
          <event>beforeDocumentModification</event>
        </listener>
    
        <listener async="true" class="org.nuxeo.ecm.platform.picture.listener.PictureViewsGenerationListener" name="pictureViewsGenerationListener" postCommit="true" priority="20">
          <event>documentCreated</event>
          <event>documentModified</event>
        </listener>
    
      </extension>
  • nuxeo-platform-mail-2021.52.8.jar /OSGI-INF/nxmail-listener-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener async="false" class="org.nuxeo.ecm.platform.mail.listener.MailEventListener" name="mailReceivedListener" postCommit="false" priority="140">
          <event>MailReceivedEvent</event>
        </listener>
      </extension>
  • nuxeo-platform-notification-2021.52.8.jar /OSGI-INF/notification-listener-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <documentation>
          Remove notification subscriptions from document when it is checked in.
        </documentation>
    
        <listener async="false" class="org.nuxeo.ecm.platform.ec.notification.NotificationCheckedInListener" name="notificationCheckedInListener" postCommit="false" priority="-30">
          <event>documentCheckedIn</event>
        </listener>
    
        <documentation>
          Copy relations from the source document to the newly published proxy.
        </documentation>
    
        <listener async="false" class="org.nuxeo.ecm.platform.ec.notification.ProxySubscriptionPropagationListener" name="proxySubscriptionPropagationListener" postCommit="false" priority="-20">
          <event>documentProxyPublished</event>
        </listener>
    
        <documentation>
         Then the notifications to subscribed users.
        </documentation>
    
        <listener async="true" class="org.nuxeo.ecm.platform.ec.notification.NotificationEventListener" name="notificationListener" postCommit="true" priority="120">
        </listener>
    
      </extension>
  • nuxeo-platform-publisher-2021.52.8.jar /OSGI-INF/publisher-listeners-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <listener async="false" class="org.nuxeo.ecm.platform.publisher.listeners.DomainEventsListener" name="domainCreationListener" postCommit="false" priority="140">
          <event>documentCreated</event>
          <event>documentModified</event>
          <event>documentRemoved</event>
          <event>documentMoved</event>
          <event>lifecycle_transition_event</event>
          <event>documentTrashed</event>
          <event>documentUntrashed</event>
        </listener>
    
      </extension>
  • nuxeo-platform-relations-core-listener-2021.52.8.jar /OSGI-INF/relations-core-listener-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <documentation>
          Deletes existing relations on a document when it is removed.
        </documentation>
    
        <!-- NXP-4951: disable this listener for most common use cases -->
        <!--
          <listener name="publishRelationsListener" async="false" postCommit="false"
          class="org.nuxeo.ecm.platform.relations.core.listener.PublishRelationsListener"
          priority="-50">
          <event>documentProxyPublished</event>
          </listener>
        -->
    
        <listener async="false" class="org.nuxeo.ecm.platform.relations.core.listener.DeleteRelationsListener" name="deleteRelationsListener" postCommit="false" priority="-40">
          <event>documentRemoved</event>
        </listener>
    
      </extension>
  • nuxeo-platform-rendition-core-2021.52.8.jar /OSGI-INF/rendition-scheduler-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener async="true" class="org.nuxeo.ecm.platform.rendition.listener.StoredRenditionsCleanupListener" name="storedRenditionsCleanup" postCommit="true">
          <event>storedRenditionsCleanup</event>
        </listener>
      </extension>
  • nuxeo-platform-rendition-publisher-2021.52.8.jar /OSGI-INF/rendition-publisher-relations-listener-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <documentation>
          Copies the relations from a replaced proxy to the new
          proxy.
        </documentation>
    
        <listener async="false" class="org.nuxeo.ecm.platform.relations.core.listener.PublishRelationsListener" name="publishRelationsListener" postCommit="false" priority="50">
          <event>renditionProxyPublished</event>
        </listener>
    
      </extension>
  • nuxeo-platform-tag-2021.52.8.jar /OSGI-INF/tag-listener-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <listener async="true" class="org.nuxeo.ecm.platform.tag.TaggedVersionListener" name="taggedVersionListener" postCommit="true">
          <event>documentRestored</event>
          <event>documentProxyPublished</event>
          <event>documentRemoved</event>
        </listener>
    
        <listener class="org.nuxeo.ecm.platform.tag.CheckedInDocumentListener" name="checkedInDocumentListener">
          <event>documentCheckedIn</event>
        </listener>
    
      </extension>
  • nuxeo-platform-task-automation-2021.52.8.jar /OSGI-INF/operations-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener async="false" class="org.nuxeo.ecm.automation.task.event.TaskEndedEventListener" name="automationTaskListener" postCommit="false" priority="200">
          <event>workflowTaskCompleted</event>
          <event>workflowTaskRejected</event>
        </listener>
      </extension>
  • nuxeo-platform-task-core-2021.52.8.jar /OSGI-INF/task-listener-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    		<listener async="false" class="org.nuxeo.ecm.platform.task.core.listener.DeleteTaskForDeletedDocumentListener" name="removeProcessForDeletedDocument" postCommit="false">
    			<event>aboutToRemove</event>
    		</listener>
    	</extension>
  • nuxeo-platform-types-2021.52.8.jar /OSGI-INF/listeners-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <listener async="false" class="org.nuxeo.ecm.platform.types.localconfiguration.UITypesConfigurationListener" name="uiTypesLocalConfigurationListener" postCommit="false" priority="100">
          <event>beforeDocumentModification</event>
        </listener>
    
      </extension>
  • nuxeo-platform-user-registration-core-2021.52.8.jar /OSGI-INF/user-registration-listener-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
    	<listener async="false" class="org.nuxeo.ecm.user.registration.UserRegistrationListener" name="registrationListener" postCommit="false" priority="140">
          <event>registrationValidated</event>
        </listener>
        <listener async="false" class="org.nuxeo.ecm.user.registration.RegistrationCleanerListener" name="registrationCleaner" postCommit="false" priority="200">
          <event>documentRemoved</event>
        </listener>
    
      </extension>
  • nuxeo-platform-userworkspace-2021.52.8.jar /OSGI-INF/userworkspace-listeners-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <listener async="false" class="org.nuxeo.ecm.platform.userworkspace.core.listener.InvalidateUserWorkspacesListener" name="invalidateUserWorkspacesListener" postCommit="false" priority="20">
          <event>documentRemoved</event>
          <event>documentTrashed</event>
          <event>documentUntrashed</event>
        </listener>
    
      </extension>
  • nuxeo-platform-video-2021.52.8.jar /OSGI-INF/video-listeners-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <listener async="false" class="org.nuxeo.ecm.platform.video.listener.VideoChangedListener" name="videoChangedListener" postCommit="false" priority="20">
          <event>documentCreated</event>
          <event>beforeDocumentModification</event>
        </listener>
    
      </extension>
  • nuxeo-quota-2021.52.8.jar /OSGI-INF/listeners-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <listener async="false" class="org.nuxeo.ecm.quota.QuotaStatsListener" name="quotaStatsListener" postCommit="false" priority="100">
          <event>documentCreated</event>
          <event>aboutToRemove</event>
          <event>documentCreatedByCopy</event>
          <event>documentMoved</event>
          <event>documentModified</event>
          <event>beforeDocumentModification</event>
          <event>aboutToRemoveVersion</event>
          <event>lifecycle_transition_event</event>
          <event>aboutToCheckIn</event>
          <event>documentCheckedIn</event>
          <event>aboutToCheckout</event>
          <event>documentCheckedOut</event>
          <event>documentRestored</event>
          <event>beforeRestoringDocument</event>
          <event>documentTrashed</event>
          <event>documentUntrashed</event>
        </listener>
    
         <listener async="false" class="org.nuxeo.ecm.quota.QuotaUserWorkspaceListener" name="quotaUserWorkspaceSetter" priority="110">
          <event>userWorkspaceCreated</event>
        </listener>
    
      </extension>
  • nuxeo-retention-2021.6.6.jar /OSGI-INF/retention-listeners.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener async="true" class="org.nuxeo.retention.listeners.RetentionDocumentEventListener" name="retentionDocumentEventListener" postCommit="true">
        </listener>
        <listener async="true" class="org.nuxeo.retention.listeners.RetentionBusinessEventListener" name="retentionBusinessEventListener" postCommit="true">
        </listener>
        <listener async="true" class="org.nuxeo.retention.listeners.RetentionExpiredListener" name="retentionExpiredListener" postCommit="true">
          <event>retentionExpired</event>
        </listener>
      </extension>
  • nuxeo-routing-core-2021.52.8.jar /OSGI-INF/document-routing-listeners-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <listener async="false" class="org.nuxeo.ecm.platform.routing.core.listener.DocumentRoutingUpdateCommentsInfoListener" name="updateCommentsInfoListener" postCommit="false" priority="120">
          <event>commentAdded</event>
          <event>commentRemoved</event>
        </listener>
    
        <listener async="false" class="org.nuxeo.ecm.platform.routing.core.listener.DocumentRouteCreationListener" name="routeCreatedListener" postCommit="false" priority="200">
          <event>documentCreated</event>
        </listener>
    
        <listener async="false" class="org.nuxeo.ecm.platform.routing.core.listener.DocumentRoutingSecurityListener" name="securityListener" postCommit="false" priority="120">
          <event>beforeRouteReady</event>
        </listener>
    
        <listener async="false" class="org.nuxeo.ecm.platform.routing.core.listener.RoutingTaskSecurityUpdaterListener" name="routingSecurityUpdaterForActors" postCommit="false" priority="250">
          <event>workflowTaskAssigned</event>
          <event>workflowTaskReassigned</event>
          <event>workflowTaskDelegated</event>
        </listener>
    
        <listener async="true" class="org.nuxeo.ecm.platform.routing.core.listener.DocumentRoutingEscalationListener" name="triggerEsclationRules">
          <event>executeEscalationRules</event>
        </listener>
    
        <listener async="true" class="org.nuxeo.ecm.platform.routing.core.listener.DocumentRoutingWorkflowDoneListener" name="cleanOpenTasksOnWorkflowDone">
          <event>afterRouteFinish</event>
        </listener>
    
        <listener async="true" class="org.nuxeo.ecm.platform.routing.core.listener.RoutingTaskDeletedListener" name="deleteRoutingTaskListener">
          <event>aboutToRemove</event>
        </listener>
    
        <!-- Disabled since 2023, tasks cleanup is done by DocumentRouteOrphanedListener -->
        <listener async="true" class="org.nuxeo.ecm.platform.routing.core.listener.DocumentRouteDeletedListener" enabled="false" name="removeTasksForDeletedDocumentRoute" postCommit="true">
          <event>documentRemoved</event>
        </listener>
        
        <listener async="true" class="org.nuxeo.ecm.platform.routing.core.listener.DocumentRouteOrphanedListener" name="removeDocumentRoutesForDeletedDocument" postCommit="true">
          <event>documentRemoved</event>
        </listener>
    
      </extension>
  • nuxeo-routing-core-2021.52.8.jar /OSGI-INF/document-routing-cleanup-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener async="true" class="org.nuxeo.ecm.platform.routing.core.listener.DocumentRoutingWorkflowInstancesCleanup" name="workflowInstancesCleanup" postCommit="true">
          <event>workflowInstancesCleanup</event>
        </listener>
      </extension>
  • nuxeo-automation-core-2021.52.8.jar /OSGI-INF/AutomationService.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <listener async="false" class="org.nuxeo.ecm.automation.core.events.OperationEventListener" name="opchainlistener" postCommit="false" priority="200">
        </listener>
    
        <listener async="true" class="org.nuxeo.ecm.automation.core.events.PostCommitOperationEventListener" name="opchainpclistener" postCommit="true" priority="200">
        </listener>
    
      </extension>
  • nuxeo-platform-audit-core-2021.52.8.jar /OSGI-INF/nxaudit-service.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener async="false" class="org.nuxeo.ecm.platform.audit.listener.StreamAuditEventListener" name="auditLoggerListener" postCommit="false" priority="500"/>
      </extension>
  • nuxeo-template-rendering-core-2021.52.8.jar /OSGI-INF/listener-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
        <listener async="false" class="org.nuxeo.template.listeners.TemplateInitListener" name="documenttemplate-init" postCommit="false" priority="500">
          <event>aboutToCreate</event>
          <event>beforeDocumentModification</event>
        </listener>
    
        <listener async="false" class="org.nuxeo.template.listeners.TemplateDeletionGuard" name="documenttemplate-deletionguard" postCommit="false" priority="500">
          <event>aboutToRemove</event>
        </listener>
    
        <listener async="true" class="org.nuxeo.template.listeners.TemplateTypeBindingListener" name="documenttemplate-type-binding" postCommit="true" priority="500">
          <event>documentCreated</event>
          <event>documentModified</event>
        </listener>
    
      </extension>
  • nuxeo-thumbnail-2021.52.8.jar /OSGI-INF/thumbnail-listener-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <listener async="true" class="org.nuxeo.ecm.platform.thumbnail.listener.UpdateThumbnailListener" name="updateThumbListener" postCommit="true" priority="999">
          <event>scheduleThumbnailUpdate</event>
        </listener>
        <listener async="false" class="org.nuxeo.ecm.platform.thumbnail.listener.CheckBlobUpdateListener" name="checkBlobUpdate" postCommit="false" priority="999">
          <event>documentCreated</event>
          <event>beforeDocumentModification</event>
        </listener>
      </extension>
  • nuxeo-user-profile-2021.52.8.jar /OSGI-INF/listeners-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <listener async="false" class="org.nuxeo.ecm.user.center.profile.listeners.ResizeAvatarPictureListener" name="resizeArticlePictureListener" postCommit="false" priority="200">
          <event>beforeDocumentModification</event>
        </listener>
    
      </extension>
  • nuxeo-user-profile-jsf-2021.52.8.jar /OSGI-INF/listeners-contrib.xml
    <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">
    
        <listener class="org.nuxeo.ecm.user.center.profile.localeProvider.UserLocaleSelectorListener" name="timezoneSelector" priority="200">
          <event>documentModified</event>
          <event>documentCreated</event>
        </listener>
    
      </extension>