---
title: Understanding Swimlane Plugin collections in MongoDB
slug: user-guide-10x/understanding-swimlane-plugin-collections-in-mongodb
docTags: 
createdAt: 2025-12-13T09:12:47.827Z
---

In this article, we’ll learn how a plugin’s data is stored in MongoDB and how this data is used in Swimlane. For illustrative purposes, we’ll use the sw\_virus\_total plugin for all examples given below.

Table of Contents:

- Package Descriptors
- Asset Descriptors
- Available Action Descriptors
- Assets
- Files and Chunks
- Tasks

## Package Descriptors

This collection has one document related to the sw\_virus\_total plugin. The document includes basic information about the plugin including readme (overview) and changelog data.

**MongoDB**

Following is sample output from the *'PackageDescriptors'* collection:

:::BlockQuote
db.getCollection('PackageDescriptors').find(\{"\_id":"sw\_virus\_total"})
:::

![](https://api.archbee.com/api/optimize/n8uUzk0MM4uC57-zlHNtY/Mwh18kjoaSEz0sm1_w5pM_image.png)

**Swimlane Application UI**

The data is displayed in the “INTEGRATIONS” section in “PLUGINS → OVERVIEW” and “PLUGINS → CHANGE LOG”:

![](https://api.archbee.com/api/optimize/n8uUzk0MM4uC57-zlHNtY/Pc26ZJVvMuoWuzT2SpWDI_image.png)

![](https://api.archbee.com/api/optimize/n8uUzk0MM4uC57-zlHNtY/6cYewBTd8VqHcJnBgIXMm_image.png)

**Asset Descriptors**

This collection has one document related to the sw\_virus\_total plugin. The document includes information on asset definition.

**MongoDB**

Following is sample output from the *'AssetDescriptors'* collection:

:::BlockQuote
db.getCollection('AssetDescriptors').find(\{"PackageDescriptor.Name":"sw\_virus\_total"})
:::

![](https://api.archbee.com/api/optimize/n8uUzk0MM4uC57-zlHNtY/NeJEATGUQ1lx2cEQ35d2q_image.png)

**Swimlane Application UI**

The data is displayed in the “INTEGRATIONS” section in “PLUGINS → ASSETS”:

![](https://api.archbee.com/api/optimize/n8uUzk0MM4uC57-zlHNtY/0vm2LpW-bJqAwpqYuqngK_image.png)

![](https://api.archbee.com/api/optimize/n8uUzk0MM4uC57-zlHNtY/jlfyAqrrCDwGNgaZEitKN_image.png)

**Available Action Descriptors**

This collection contains as many documents as the number of task actions available specifically for the sw\_virus\_total plugin.

**MongoDB**

Following is a sample output of AvailableActionDescriptors collection:

:::BlockQuote
db.getCollection("AvailableActionDescriptors").find(\{"PackageDescriptor.Name":"sw\_virus\_total"})
:::

![](https://api.archbee.com/api/optimize/n8uUzk0MM4uC57-zlHNtY/BUicrx88QVBvEPQsQjmAN_image.png)

Filter by the Name field:

:::BlockQuote
db.getCollection("AvailableActionDescriptors").find(\{"PackageDescriptor.Name":"sw\_virus\_total"}, \{Name: 1})
:::

![](https://api.archbee.com/api/optimize/n8uUzk0MM4uC57-zlHNtY/crcmvDzJy4xJG3-LOmR6z_image.png)

**Swimlane Application UI**

The data is displayed in the “INTEGRATIONS” section under “PLUGINS → ACTIONS” and “TASKS → Create a Task”:

![](https://api.archbee.com/api/optimize/n8uUzk0MM4uC57-zlHNtY/0_94rJ_idMoDGNi2c0gqo_image.png)

![](https://api.archbee.com/api/optimize/n8uUzk0MM4uC57-zlHNtY/7Ft5jDtx4bbAujMjpV45c_image.png)

![](https://api.archbee.com/api/optimize/n8uUzk0MM4uC57-zlHNtY/36HbEda4V4Kx6QsvM_6KM_image.png)

**Assets**

This collection contains as many documents (s) as the number of assets created for the sw\_virus\_total plugin. A plugin can be associated with multiple assets.

**MongoDB**

Following is a sample output of 'Assets' collection:

:::BlockQuote
db.getCollection('Assets').find(\{"Descriptor.PackageDescriptor.Name": "sw\_virus\_total"})
:::

![](https://api.archbee.com/api/optimize/n8uUzk0MM4uC57-zlHNtY/EcQF0szx-PRRC5RhKHgQo_image.png)

Filter by the Name field:

:::BlockQuote
db.getCollection('Assets').find(\{"Descriptor.PackageDescriptor.Name": "sw\_virus\_total"}, \{Name:1})
:::

![](https://api.archbee.com/api/optimize/n8uUzk0MM4uC57-zlHNtY/7LS8St-NpK1ivnnzxD4Gz_image.png)

**Swimlane Application UI**

The data is displayed in the “INTEGRATIONS” section under “ASSETS”:

![](https://api.archbee.com/api/optimize/n8uUzk0MM4uC57-zlHNtY/17Vasqzt-2-V3Gy5espo1_image.png)

## Files and Chunks

Per MongoDB, “<u>GridFS</u> is a specification for storing and retrieving files that exceed the <u>BSON</u>-document <u>size limit</u> of 16 MB. Instead of storing a file in a single document, GridFS divides the file into parts, or chunks <u>\[1]</u>, and stores each chunk as a separate document.”

It is a file system to store files, but its data is stored within MongoDB collections. The collection, ‘fs.chunks’, stores the document parts while the collection, ‘fs.files’ stores the file’s metadata.

Swimlane uses this system to store the actual plugin file (.swimbundle) when it is first uploaded in Swimlane. Upon restart of Swimlane, the plugins are re-installed into the containers using the file data available in these two collections.

**MongoDB**

Following is a sample output of ‘fs.files’ and ‘fs.chunks’ collection:

:::BlockQuote
db.getCollection('fs.files').find(\{filename: /sw\_virus\_total/})
:::

![](https://api.archbee.com/api/optimize/n8uUzk0MM4uC57-zlHNtY/UbuqjmSmRs1nk0furPTLg_image.png)

:::BlockQuote
db.getCollection('fs.chunks').find(\{'files\_id':'\<\_id>'})
:::

![](https://api.archbee.com/api/optimize/n8uUzk0MM4uC57-zlHNtY/Zn1WZoK_lJL7JjifarM07_image.png)

**Tasks**

This collection contains all tasks of type Email Import, Powershell Core, Python 3.6, Python 2.7, Network File, API, plugin-based task action (non-forked), and plugin-based task action (forked).

**MongoDB**

The following query will list all tasks that use the sw\_virus\_total plugin task actions:

:::BlockQuote
db.getCollection('Tasks').find(\{"Action.Descriptor.PackageDescriptor.Name" : "sw\_virus\_total"})
:::

Filter by Name and Action Type:

:::BlockQuote
db.getCollection('Tasks').find(\{"Action.Descriptor.PackageDescriptor.Name" : "sw\_virus\_total"}, \{Name:1, "Action.\_t":1})
:::

![](https://api.archbee.com/api/optimize/n8uUzk0MM4uC57-zlHNtY/LdZAOSQkcPhLy-CWd7hFT_image.png)

The following query will list all tasks forked based on the sw\_virus\_total plugin task actions:

:::BlockQuote
db.getCollection('Tasks').find(\{"Action.ForkedFromPackage" : "sw\_virus\_total"})
:::

Filter by Name and Action Type:

:::BlockQuote
db.getCollection('Tasks').find(\{"Action.ForkedFromPackage" : "sw\_virus\_total"}, \{Name:1, "Action.\_t":1})

:::

![](https://api.archbee.com/api/optimize/n8uUzk0MM4uC57-zlHNtY/hSRz_b71CcC_jB-X5uqW0_image.png)

**Related Queries:**
Return a list of installed plugins:

:::BlockQuote
db.getCollection('PackageDescriptors').distinct('Name')
:::


Find all the tasks associated with a particular assetId:

:::BlockQuote
db.getCollection('Tasks').find(\{'Action.AssetId': '\<assetId>'})
:::

