This plugin sends notification E-Mails about expiring assets.
More specifically, it searches for assets which fulfill a certain date-based condition and then determines a list of notification recipients for each asset found.
The primary use case is to send warnings about expiring usage rights to users who downloaded the expiring asset in the past.
To be configured in {home}/appserver/conf/custom.properties
You can define several expiration notifiers by incrementing the counter after expirationNotifier:
expirationNotifier.1.someProperty=...
expirationNotifier.2.someProperty=...
In the following documentation, 1 will be used as an example.
To apply a property to all notifiers, simply use default instead of the number, e.g.
expirationNotifier.default.someProperty=...
. Numbered properties will still override the default value if defined.
type: String, required: yes, default: -
license key (delivered by brix IT Solutions)
type: int, required: yes
How many days before reaching the expiration date should the notification be sent?
type: int, required: no
Shifts the date range m days into the past
Instead of all assets which will in expire in the next n days from now, all assets which will have been expired for m days in the next n days are selected (where n is warnAheadPeriodInDays and m is negativeTimeOffsetInDays).
This can be used to send notifications for assets which have been expired for a certain amount of days or even delete them in combination with the deleteExpiringAssets flag.
type: list of bean names, required: yes
A comma-separated list of bean names of type ExpiringAssetsFinder
.
By default, the following asset finder beans are available:
You can also define your own custom asset finder by implementing the ExpiringAssetsFinder
interface.
public interface ExpiringAssetsFinder {
Iterable<ExpiringAsset> getExpiringAssets(Date fromDate, Date toDate);
}
type: long, required: yes (if dateInfofieldExpiringAssetsFinder is used)
The ID of the Date information field to use for dateInfofieldExpiringAssetsFinder.
type: list of bean names, required: yes, default: -
A comma-separated list of bean names of type NotificationRecipientFinder
.
Each NotificationRecipientFinder
returns a set of notification recipients for each asset.
By default, the following recipient finder beans are available:
You can also define your own custom recipient finder by implementing the NotificationRecipientFinder
interface.
public interface NotificationRecipientFinder {
Set<Recipient> findRecipientsForExpiredAsset(AssetId assetId);
}
type: string, required: if globalStorageNotificationRecipientFinder is used
The Global Storage Key to use in globalStorageNotificationRecipientFinder.
Known values:
type: list of strings (comma-separated), required: if staticNotificationRecipientFinder is used
Static list of e-mail addresses to notify, regardless of their involvement, e.g. application owner or the marketing department. The E-Mail format with display name (Max Muster max@muster.name) is supported.
type: list of IDs (comma-separated), required: no
A list of IDs of CELUM users to notify.
type: list of IDs (comma-separated), required: no
A list of IDs of CELUM user groups to notify. Users will be determined recursively.
type: list of IDs (comma-separated), required: yes
A list of IDs of asset information fields containing E-mail addresses. The E-Mail format with display name (Max Muster max@muster.name) is supported.
type: list of IDs (comma-separated), required: yes
A list of IDs of asset information fields containing names. Each name is matched against the registered users to find the corresponding E-Mail address.
type: boolean, default: true
Whether to notify the uploader of the currently active version of the asset.
type: boolean, default: false
Whether to notify the original creator of the asset.
type: string, required: no, default: expirationNotifier.mail.subject
The Spring message key to use to generate the mail subject.
It is possible to use placeholders in the form $[propertyName]
in your localized message.
These will automatically be replaced with the corresponding configuration value,
e.g. $[warnAheadPeriodInDays]
will be replaced with the number value configured for the current notifier.
type: string, required: no, default: ch.brix.expirationNotifier.default
The path to the velocity mail template, so you can customize them via home/appserver/velocity
.
The default ch.brix.expirationNotifier.default_en.vm
looks like this:
#* @vtlvariable name="warnAheadPeriodInDays" type="int" *#
#* @vtlvariable name="recipient" type="ch.brix.expirationNotifier.model.Recipient" *#
#* @vtlvariable name="expiringAssets" type="java.util.List<ch.brix.expirationNotifier.model.ExpiringAsset>" *#
#* @vtlvariable name="dateTimeFormatter" type="java.time.format.DateTimeFormatter" *#
#* @vtlvariable name="locale" type="java.util.Locale" *#
#* @vtlvariable name="applicationBaseUrl" type="java.lang.String" *#
#* @vtlvariable name="applicationName" type="java.lang.String" *#
<p class="intro">The following assets will expire in the next $!warnAheadPeriodInDays days:</p>
<ul class="expiringAssets">
#foreach($expiringAsset in $expiringAssets)
<li>Asset "$!expiringAsset.assetName" (ID: $!expiringAsset.assetId) -
Expires $dateTimeFormatter.format($expiringAsset.expirationDate.toInstant())<br/>
<a href="${applicationBaseUrl}/main/opennodeview.do?assetId=${expiringAsset.assetId}">Show in ${applicationName}</a>
</li>
#end
</ul>
<p class="product-info">
${applicationName}<br/>
${applicationBaseUrl}
</p>
<p class="no-reply">Note: This notification email has been generated automatically, please do not reply.</p>
type: boolean, required: no, default: false
Whether to delete all assets matched by the configured assetFinders. Use with caution!
type: boolean, required: no, default: true
If enabled recipient addresses are submitted in RFC 822 format: "Jane Doe" jane.doe@example.com
type: string, required: no, since: 1.11.0
An optional asset filter expression for this notifier configuration. See Search Util 2 for syntax.
Basic example:
expirationNotifier.1.warnAheadPeriodInDays=30
expirationNotifier.1.assetFinders=availabilityExpiringAssetsFinder
expirationNotifier.1.recipientFinders=statisticsNotificationRecipientFinder
Advanced example with multiple finders:
expirationNotifier.1.warnAheadPeriodInDays=60
expirationNotifier.1.assetFinders=availabilityExpiringAssetsFinder,dateInfofieldExpiringAssetsFinder
expirationNotifier.1.dateInfofieldExpiringAssetsFinder.informationFieldId=130
expirationNotifier.1.recipientFinders=statisticsNotificationRecipientFinder,staticNotificationRecipientFinder
expirationNotifier.1.staticNotificationRecipientFinder.staticEmails=dam-owner@company.com
expirationNotifier | CELUM (min. version) |
---|---|
1.0-5.12.4 to 1.5.0-5.12.4 | 5.12.4 |
1.6.1-5.13.3 | 5.13.3 |
1.6.2-5.13.4 | 5.13.4 |
1.9.0-6.8 | 6.8.0 |
Released 2017-10-26
- Initial Version
Released 2018-04-12
- License check added
Released 2018-04-12
- Code optimizations
Released 2019-01-07
- Added "Delete expiring assets" feature
- Optimized license handling
Released 2019-06-24
- Added possibility to notify users by user or user group ID via staticUsersNotificationRecipientFinder
Released 2021-05-12
- Improved tracking which notifications have already been sent
Released 2021-10-20
- Added possibility to retrieve recipient E-mail addresses from asset information fields via infoFieldNotificationRecipientFinder
Released 2022-04-13
- Implemented NameMatchNotificationRecipientFinder
Released 2022-06-02
- Implemented UploaderNotificationRecipientFinder
Released 2022-06-02
- Implemented optional asset filter expression per notifier configuration