![Advanced-UI](https://img.shields.io/static/v1?label=UI&message=Advanced&color=lightgrey) 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. [MINITOC] ## 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.](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html) 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://.sharepoint.com/sites//_layouts/15/appinv.aspx` i.e. `https://.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: ```xml ``` 11. Create a Sharepoint Export in CELUM and enter the Client ID and Client Secret obtained in steps 4. and 7. 12. Then enter your site URL `https://.sharepoint.com/sites/` 13. 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_adminmenu.png) ![Asset Exporter Create Export](asset_exporter_create_job.png) ![Asset Exporter Overview](asset_exporter_overview.png) ## 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 + Search expert mode for usage of the [anura search pattern](https://docs.brix.ch/anura/api#search) (without the `search_` prefix) #### 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