Asset Exporter

Advanced-UI

Exports assets in regular intervals to a defined folder. If metadata has to be exported as well (as CSV or Excel file), you can use the "Extended Asset Exporter". Also supports public URLs now.

Properties

To be configured in {home}/appserver/conf/custom.properties

Renamed from documentExport to assetExporter in version 2.16.0, if you use a version below 2.16.0, use documentExport as property prefix, otherwise use assetExporter

With a restricted license, the number of exports is limited. E.g. { "licensee": "celum", "product": "assetExporter", "maxExports": 6 }

General properties

assetExporter.license

type: String, required: yes, default: -

License key (delivered by brix IT Solutions)

assetExporter.changeDetectionNode

type: long, required: yes, default: -

Defines the ID of the root-node, under which a node will be created for each job to collect the changed assets of the job.

assetExporter.internalUrl

type: String, required: no, default: -

Rewrites the URLs received from the download request, so that the file can be retrieved directly through the intranet.

assetExporter.visibleForGroup

type: long, required: no, default: -

Restrict the use of the plugin to this user group ID (superadmins always see it in any case)

assetExporter.jobInterruptGraceTimeInMillis

type: int, required: no, default: 3000

Grace time before a job thread is killed

assetExporter.metadataExportEnabled

type: boolean, required: no, default: yes

Enable or disable the possibility to export metadata of the exported assets (as CSV or Excel file).

assetExporter.simulateFileNameResolverAsAssetName

type: String, required: no, default: 1:

Shortcut to speed up full exports -> simulate the asset filename resolver format: :,..., e.g. 1:jpg,2:png will assume .jpg when using dlf 1. you can leave empty to use the files' original file extension (e.g. for original format)

assetExporter.customNameResolverFactories

type: String, required: no, default: -

Whitelist for custom name resolvers (inherit by CustomNameResolverFactory), default resolver factories are always available

assetExporter.customPathResolverFactories

type: String, required: no, default: -

Whitelist for custom path resolvers (inherit by CustomPathResolverFactory), default resolver factories are always available

assetExporter.exportBasePaths

type: String, required: no, default: -

Defines the base paths for the local export locations (comma-separated). If defined, the plugin only allows to export to subfolders of one of the predefined base paths. If not defined, every export location is allowed.

assetExporter.sendMail

type: Boolean, required: no, default: true

If true, error mails will be sent when a job fails

assetExporter.errorMail

type: String, required: no, default: -

Email address for sending error mails

assetExporter.publicUrlSetInstance

type: Boolean, required: no, default: true

Set this to false for Celum 5.13.x and older versions, then the instance will always be "1", because instance can only be a positive integer ("1"). Otherwise the instance will be set to the export name.

assetExporter.publicUrlProviderName

type: String, required: no, default: Asset Exporter

The public URL provider name. This is just the name of the tab where the URL will be shown in the sidebar.

CSV properties

assetExporter.metadataExport.csv.separator

type: char, required: no, default: ,

CSV separator for the metadata csv export

assetExporter.metadataExport.csv.quotechar

type: char, required: no, default: "

CSV quote char for the metadata csv export

assetExporter.metadataExport.csv.quoteAll

type: booelan, required: no, default: true

Define if all csv values are quoted

assetExporter.metadataExport.csv.encoding

type: String, required: no, default: UTF-8

Encoding for the metadata csv export

assetExporter.metadataExport.csv.lineend

type: String, required: no, default: \r\n

End of line for the metadata csv export

assetExporter.metadataExport.csv.dateFormat

type: String, required: no, default: yyyy-MM-dd

Date format for csv exports

assetExporter.exportOnChange

type: boolean, required: no, default: false

If true, an asset change will trigger its delta export jobs

assetExporter.exportOnChangeRetainSeconds

type: long, required: no, default: 60

Time between asset change and automatic start of the export, if exportOnChange is true (in seconds)

assetExporter.personalExports

type: boolean, required: no, default: false

If true, users can only see and edit own export jobs, superadmins can see and edit all export jobs.

assetExporter.instantExportEnabled

type: boolean, required: no, default: false

If true, users can instant export an asset or all assets of an node to all its jobs by the context menu of an asset or a node.

assetExporter.instantExportForManuallyJobs

type: boolean, required: no, default: true

If true, and instant exports are enabled, asset will also be exported to its manually configured jobs.

Amazon S3 Export

  1. Create an IAM-User with AmazonS3FullAccess to get the Access Key ID and the Secret Access Key.
  2. Create a bucket to get Bucket and Region.
  3. Choose Amazon S3 as Export type and enter the values from above.

Attention

  • We need the region and not the region name which is specified when creating the bucket. See here for a list of all values. For digitalocean you can see the region in the URL, e.g. brix.fra1.digitaloceanspaces.com.
  • The base path is required and cannot be "/" (unless you make a node export and have no assets directly in that node). This is because uploading assets directly into the bucket without subfolder will fail, and libraries cannot be shaded because awssdk loads some classes by name.
  • Make sure that all the file names adhere the naming conventions. When in doubt, use the ID structure path resolver and the download format ID name resolver.

Note (28.10.2019): digitalocean is not fully S3 compatible, that's why leftover deletion is not supported there (will lead to an error).

Microsoft Azure Blob Storage Export

  1. Right-click on the container > Get Shared Access Signature
  2. Check all permissions
  3. Set expiry date far into the future
  4. Generate

Starting with Java 17, your JAVA_OPTS must contain --add-opens java.base/java.lang.invoke=ALL-UNNAMED, as their library requires it (we'll look into it).

Sharepoint Export

  1. Sign in to the Microsoft Entra admin center as at least a Cloud Application Administrator.

  2. Browse to Identity > Applications > App registrations and select New registration.

  3. Enter a name and create.

  4. Copy the Application (client) ID. You will need it later.

  5. Click on API permissions and then Add a permission. Choose SharePoint from the list of APIs and then select Delegated permissions.

  6. Check the permissions you need for your app: e.g. AllSites.Manage.

  7. Click on Certificates & secrets and then New client secret. Enter a description and an expiration date for your secret and click Add. Copy the value of the secret and store it securely. You will need it later.

  8. Go to either your Sharepoint site or domain (to allow all sites) and append .../_layouts/15/appinv.aspx, e.g. https://<company>.sharepoint.com/sites/<site>/_layouts/15/appinv.aspx i.e. https://<company>.sharepoint.com/_layouts/15/appinv.aspx

  9. Look up the Client ID you saved in step 4.

  10. As domain enter http://localhost and paste the following XML in the permission field and click create:

<AppPermissionRequests AllowAppOnlyPolicy="true">
    <AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl"/>
</AppPermissionRequests>
  1. Create a Sharepoint Export in CELUM and enter the Client ID and Client Secret obtained in steps 4. and 7.

  2. Then enter your site URL https://<company>.sharepoint.com/sites/<site>

  3. As list title enter the name of your document collection without escaping, e.g. Documents (the list always seems to be named Documents even if in the URL it is called Shared Documents, e.g. if we open the documents on our test site the URL in the browser is https://brixag.sharepoint.com/sites/Test/Shared%20Documents/Forms/AllItems.aspx but the list is still called Documents). To copy the files directly into the root you can enter / as export path.

CRON properties

assetExporter.cronExpression.hourly

type: String, required: no, default: 0 0 0/1 1/1 ?

Cron expression for hourly execution

assetExporter.cronExpression.daily

type: String, required: no, default: 0 0 0 1/1 ?

Cron expression for daily execution

assetExporter.cronExpression.weekly

type: String, required: no, default: 0 0 0 ? SUN

Cron expression for weekly execution

assetExporter.cronExpression.manually

type: String, required: no, default: 59 59 23 31 12 ? 2099

Never executing cron expression

Screenshots

Asset Exporter Adminmenu

Asset Exporter Create Export

Asset Exporter Overview

Compatibility Matrix

documentExport CELUM (min. version)
1.0 5.11.4
1.1 5.12.2
1.2 - 2.3 5.12.4
2.3.1 - 2.5 5.13.1
2.5.1 - 2.8.3 5.12.4
2.8.3 - 2.8.11 5.13.3
2.9.28 5.13.4
2.15.6 5.13.4 (tested with 6.4)
2.16.0 6.4.0 (tested with 6.4)
2.27.2 6.12.0 (tested with 6.12)

Release Notes

1.0

Released 2016-07-18

  • Initial Version

1.1

Released 2016-12-15

  • Extension for logging (the report can either be exported together with the assets or stored locally on the server)

1.2

Released 2017-02-16

  • The export destination can be either a share available on the server or an FTP server

1.9

Released 2017-09-26

  • Export configuration, adapt node IDs and mode

2.0

Released 2017-09-28

  • Search export jobs possible

2.3

Released 2018-03-28

  • Combination of different search criteria for a search export job possible

2.5

Released 2018-12-11

  • Public URLs

2.5.9

Released 2019-01-17

  • DefaultNameResolverFactories and CustomNameResolverFactories. Default are always available, custom have to be enabled by the customNameResolverFactories property.

2.6.0

Released 2019-01-22

  • Base paths for export configurable

2.7.0

Released 2019-01-22

  • SearchJob: Cron-Expression customizable, empty and not-empty searches

2.8.2

Released 2019-03-04

  • Custom path resolvers, Amazon S3 Export

2.8.4

Released 2019-03-19

  • Execute-As setting for superadmin to define as which user a job should be executed, for non-superadmin jobs will be executed as creator user.
  • Only show own export-tasks (except superuser)
  • Button to manually schedule assets to its jobs

2.8.6

Released 2019-03-27

  • job setting to set export status on exported assets (infofield a value configurable)

2.8.12

Released 2019-05-08

  • if export status value is empty, infofield value will be cleared in return option "none" for export status infofield

2.9.0

Released 2019-05-15

  • export status value for failed and for succeeded exports
  • toast notification when assets are rescheduled

2.9.22

Released 2019-07-30

  • Microsoft SharePoint export
  • Microsoft Azure Blob Storage export
  • Internal URLs

2.9.26

Released 2019-08-22

  • new properties: publicUrlSetInstance, publicUrlProviderName
  • moved public URLs to the export set

2.9.26

Released 2019-08-22

  • new properties: publicUrlSetInstance, publicUrlProviderName
  • moved public URLs to the export set

2.10.0

Released 2019-09-05

  • Search by CreateDate possible (format: dd/MM/yyyy-dd/MM/yyy)

2.10.1

Released 2019-09-09

  • cron expression validation and parse to human readable string

2.11.0

Released 2019-09-11

2.11.4

Released 2019-10-17

  • Better GUI design
  • Custom end point URI for S3 export, to support other S3-compatible destinations apart from Amazon

2.11.10

Released 2019-11-04

  • CSV export: option for csv with timestamp in filename
  • Option to clean filename (only alphanumerics)
  • Runtime configurable properties
  • Option to export on change for delta jobs

2.14.0

Released 2020-01-17

  • Added new "Skip file upload" feature (e.g. to modify public URLs without uploading the file again)
  • Minor improvements

2.15.5

Released 2020-02-17

  • Search Preview function for all search jobs (paged)
  • Refactoring, Bugfixes (Typos)
  • SFTP Transport Library

2.15.6

Released 2020-02-18

  • CELUM 6.4 (19.10) compatible

2.16.0

Released 2020-10-28

  • Renamed from documentExport to assetExporter

2.19.0

Released 2021-05-18

  • restricted license feature (number of exports can be limited in the license)

2.20.0

Released 2021-05-27

  • FTPS support

2.21.0

Released 2021-08-05

  • Job name as change node name

2.22.0

Released 2021-08-19

  • Send metadata export by mail feature

2.23.0

Released 2021-10-25

  • Export Metadata with publicUrls / Export every exportSet

2.24.0

Released 2021-11-12

  • Metadata export path separately configurable

2.25.0

Released 2021-12-10

  • Internal Export job improvements

2.26.0

Released 2021-12-10

  • Nova backend endpoints added

2.27.0

Released 2022-04-01

  • Response message when scheduling assets

2.27.2

Released 2022-04-21

  • CELUM 6.12 compatibility

2.28.0

Released 2022-05-12

  • Log rotation task added

2.29.0

Released 2022-07-05

  • Switch xsl generation to fastexcel

2.30.0

Released 2022-07-28

  • Library updates

2.31.0

Released 2022-07-05

  • Show custom Cron expressions in list view
  • Auto create change node if it's deleted

2.32.0

Released 2022-08-18

  • Simulations-Original-Name-Resolver

2.33.0

Released 2022-10-06

  • Personal exports feature

2.34.0

Released 2023-10-03

  • Instant asset export feature

2.39.0

Released 2024-03-01

  • SearchUtil2 added breaking change