InsureMO Offerings
ICS
Advanced Features
File Storage Support
Sidebar On this page

Basic Concept

Standard Bucket

Our standard approach at InsureMO for document storage during tenant setup is as follows:

  • Each tenant is provided with a standard tenant bucket. For example, for the UAT tenant, the bucket format will be tenant-sg-uat-bucket. Each tenant bucket will have a unique physical endpoint address.

  • The standard tenant bucket functions when the BFF (Backend for Frontend) calls the standard platform API. For example, the BFF may call the DMS API for document management or when the project team needs to deploy configuration data and temporarily store the configuration file.

  • If your project team requires detailed bucket information, please ask the InsureMO SiteOps team for help.

Storage Method

The project team has three options for storing content in the BFF:

  • For technical purposes, call the Container CloudDisk API. This allows you to configure the bucket and store documents in any location. It is more suitable for technical scenarios such as file integration. For guidance, see CloudDisk-Service.

  • For business purposes, utilize the ICS DMS API (not the filesupport JAR mentioned in this document). This API facilitates saving files to the tenant’s standard bucket. It is commonly used for business documents, such as policy document, as it offers business ID indexing.

  • For SAAS purposes, adopt the InsureMO iDocs offering, which provides the entire UI journey for document management.

CharacteristicsDMSCloudDiskiDocs
PositionPAASPAASSAAS
Support TeamAppframeworkContaineriDocs
PurposeBusiness doc managementTechnical file managementBusiness doc management
With UINoNoYes
SubscriptionInsureMOInsureMOSeparate
ReferenceDocument ManagementCloudDisk-ServiceiDocs Introduction

Bucket Naming Rule

For each environment, a common bucket will be set up for each tenant. The bucket format is {tenant code}-{env bucket prefix}bucket, e.g., TenantCode-vela-smk-bucket, freshman-ptdev-bucket.

Within each bucket, separate folders are created underneath, typically categorized as follows:

Folder NameLevelCreatorUsageSample
{tenant code}-{env bucket prefix}bucket-templatetenantTSBatch, product, plan, ppTenantCode-vela-smk-bucket-template
{tenant code}-{env bucket prefix}bucket-instancetenantTSRatetable upload, uploadTenantCode-vela-smk-bucket-instance
{tenant code}-{env bucket prefix}bucket-dms-thumbtenantTSDMS storageTenantCode-vela-smk-bucket-dms-thumb
{tenant code}-{env bucket prefix}bucket-dms-documenttenantTSDMS thumbsTenantCode-vela-smk-bucket-dms-document
{tenant code}-{env bucket prefix}bucket-platformtenantTSData I/O, lib product copyTenantCode-vela-smk-bucket-platform

Share Bucket

If the project team has specific usage requirements and wants to share the bucket with the client’s IT team, for instance, exposing the bucket to the client’s team to fetch data like batch printing PDFs, we recommend setting up a separate bucket. This approach ensures:

  • A clean new bucket, free from any temporary files in the platform bucket.
  • Easy control over both read-only and editable authorities.

Depending on the volume of business transactions and security considerations, buckets can be set up under either a client’s account or an InsureMO account.

It is preferable to set buckets up under a client’s account to reduce S3 costs (storage and transmission fees) and address security concerns. However, if data security and regulatory compliance are the primary concerns, it is recommended that the bucket be set up under an InsureMO account.

Environment Parameter (for Private Cloud)

Global

Parameter NameUsageSample ValueRemark
file.bucket.prefixAppend bucketvela-dev-, vela-smk-Necessary
file.supportType.defaultStorage typeS3, Azure, Aliyun, Sftp, SystemFileNecessary
platform.foundation.file.type.whiteListFile extension whitelist.csv, .xls, .xlsxNecessary

For S3

Parameter NameUsageSample ValueRemark
{tenant}.file.s3client.accessKeyConnection-Necessary for tenants
{tenant}.file.s3client.secretKeyConnection-Necessary for tenants
{tenant}.file.s3client.regionConnectionus-east-1Necessary for tenants
{tenant}.file.s3client.endpointConnection-Unnecessary(default as an AWS server)

For Azure

Parameter NameUsageDefault ValueRemark
{tenant}.file.azureClient.accountNameConnection-Necessary for tenants
{tenant}.file.azureClient.accountKeyConnection-Necessary for tenants
{tenant}.file.azureClient.endpointConnectionhttps://%s.blob.core.windows.netNot Necessary(Default Azure server)

For Aliyun

Parameter NameUsageSampleRemark
{tenant}.file.ossClient.accessKeyConnection-Necessary for tenants
{tenant}.file.ossClient.secretKeyConnection-Necessary for tenants
{tenant}.file.ossClient.endpointConnectionhttps://oss***aliyuncs.comNecessary for tenants

For SFTP

Parameter NameUsageDefault ValueRemark
{tenant}.file.sftp.hostConnection-Necessary for Tenant
{tenant}.file.sftp.portConnection22Necessary for Tenant
{tenant}.file.sftp.usernameConnection-Necessary for Tenant
{tenant}.file.sftp.passwordConnection-Necessary for Tenant
{tenant}.sftp.mount.pathStorgeThe custom root folder path

For Google

Parameter NameUsageDefault ValueRemark
{tenant}.file.googleClient.clientIdConnectionNecessary for Tenant
{tenant}.file.googleClient.clientEmailConnectionNecessary for Tenant
{tenant}.file.googleClient.privateKeyConnectionNecessary for Tenant
{tenant}.file.googleClient.privateKeyIdConnectionNecessary for Tenant

For Custom

Custom storage, You can store files and operate it in customized storage media through API

To enable this function, here is the steps

  1. by passing field customAppName in AbstractFileRequest
  2. implement the interface CustomFileSupportRest

**note: It is recommended to use this function through DMS **

POM Dependency

<dependency>
<groupId>com.insuremo.vela</groupId>
<artifactId>vela-file-support</artifactId>
<version>${project.version}</version>
</dependency>

Method Summary

Modifier And TypeMethodReturnDescription
public FileSaveResultsave(FileSaveRequest request)FileSaveResultadds an object
public byte[]get(FileGetRequest request)byte[] of objectretrieves an object
public voiddelete(FileDeleteRequest request)remove an object from a bucket
public ObjectlistVersion(FileGetRequest request)List ObjectVersionget all versions of the object in a bucket
public LonggetObjectSize(FileGetRequest request)the object sizeget the object size from an object without returning the object itself
public voidcopy(FileCopyRequest request)creates a copy of an object that is already stored in a bucket
FileSaveRequest

Used in save() method

FieldDescriptionRequired
objectKeyThe key of the objectY
bytes[]bytes of the objectY
FileSaveResult

Return of save() method

FieldDescriptionTypeRequired
versionIdversion id of anobjectLongN
FileGetRequest

Used in get(), listVersion(), getObjectSize() method

FieldDescriptionRequired
objectKeyThe key of the objectY
versionIdversion id of an objectN
FileDeleteRequest

Used in delete() method

FieldDescriptionRequired
objectKeyThe key of the objectY
FileCopyRequest

Use in copy() method

FieldDescriptionRequired
sourceObjectKeyThe key of the object to copyY
destinationObjectKeyThe key of the destination objectY
ObjectVersion

Return of listVersion() method

FieldDescriptionTypeRequried
keythe key of the objectStringN
eTagThe entity tag is an MD5 hash of that version of the object.StringN
sizeSize in bytes of the object.LongN
versionIdversion id of an objectStringN
isLatestSpecifies whether the object is (true) or is not (false) the latest version of an object.BooleanN
lastModifiedDate and time when the object was last modified.InstantN

Feedback
Was this page helpful?
|
Provide feedback