Storage Unit Moving for ISAD(G)

The main purpose of this functionality is to support The National Archives - Moving to Mo Workflow.

User Story

The National Archives is running out of storage space so they want to move some of the less requested/needed items to another depot in Mo. Their desired workflow for this is as follows

  1. They will move the items in several shipments.

  2. Each shipment will contain roughly 6000 items.

  3. An admin user will choose some items from Asta7 for a shipment. They can choose from any level (Arkiv/Arkivdel/Serie/Stykke/Mappe). If they choose from the logical levels (Arkiv/Arkivdel/Serie) all the underlying items will be chosen.

  4. Then they will print QR codes for the chosen items.

  5. The QR codes will then be glued on the items/boxes.

  6. When the shipping company arrives to collect the boxes, they will scan the QR codes with an app on their mobile. The app will then update the status of the collected items in the system as moving.

  7. Once the items reach Mo the QR codes will be scanned again and a request will be made to Asta7 to update the status of those items as moved.

  8. Steps 3 to 7 will repeat for each shipment.

Implementation

As we are moving storage units the implementation involves the Asta7 and Repository modules.

Asta7

Added a new cart component that has support for searching, and removing and can also handle a large amount of items (current limit is 10,000).

An admin user can gather the storage units they want to move in this cart. This is how it will work for different entity types

  • If a Stykke is being added to the cart then Asta7 will fetch the corresponding storage unit from the repository module and if found add that to the cart.

  • If a Mappe (which has a parent of type Serie) is being added to the cart then Asta7 will fetch the corresponding storage unit item from the repository module and if found will add that to the cart.

  • If Arkiv/Arkivdel/Serie is being added to the cart then all the descendants Stykke and Mappe of that item will be gathered and their corresponding storage unit (or storage unit items) will be fetched from the repository module and then added to the cart.

Once they are satisfied with the items in the cart they can start the move process. which will save the items in the repository module. The rest of the process will be handled in the repository module.

Repository

All the StorageUnitMove operations/shipments can be viewed and managed from the repository module.

Domain classes:

StorageUnitMove

This is the parent or wrapper class that represents each move operation/shipment. This has the following properties

Field

Description

Field

Description

id: UUID

Database primary key

code: Integar

A serial type field to uniquely identify each storage unit move order

shelf: Shelf

The shelf reference where the storage units are being moved. Most likely, a virtual shelf to just hold the storage units.

done: Boolean

A flag to indicate if all the items have been moved or not.

items: List<StorageUnitMoveItem>

The items (storage unit and/or storage unit items) that are being moved.

StorageUnitMoveItem

This class represents each item (storage unit and/or storage unit item) that is being moved.

Field

Description

Field

Description

id: UUID

Database primary key

storageUnitMove: StorageUnitMove

A reference to the order this item belongs to

storageObject: StorageObject

A reference to the actual asta7 object table that holds all necessary object information, identified by _AMID

state: Enum

Representing the current status of the item in the moving process. Possible values are:

  1. Started (Initial state)

  2. SyncFailed (There was an error with the api request to the SynQ (Mo) server)

  3. InProgress (The api request for this item was successfully send to the SynQ (Mo) server)

  4. Done (The item has reached Mo)

StorageObject

This class represents object information of Asta7 Items used in the repository system.

Field

Description

Field

Description

id: UUID

Database primary key

instituteId: String

The organization id that the object belongs to

projectId: String

The project the object belongs to

entityName: String

The name of entity (arkive/stykke/mappe…) of the object

title: String

The title of the object

rootObjectId: UUID

The amid of the root of the object

rootEntityName: String

The name of the root of the object

rootTitle: String

The title of the root of the object

contentPath: String

The path of the object in Asta7

asta7Url: String

The url of asta7 instance which the object belongs to

rootObjectIdentifier: String

The identifikator field value of the root object

rootObjectName: String

The navn field value of the root object

rootObjectScope: String

The omnfang field value of the root object

QR Code Scanner App

An app has been developed as part of the repository module which can scan QR codes and make requests for changing the status of the scanned items.