--- title: "Azure Storage Input Module" slug: "azure-storage-input-module" description: "Describes the Azure Storage Input module." updated: 2026-06-19T10:37:18Z published: 2026-06-19T10:37:18Z canonical: "kb.lasernetgroup.com/azure-storage-input-module" --- > ## Documentation Index > Fetch the complete documentation index at: https://kb.lasernetgroup.com/llms.txt > Use this file to discover all available pages before exploring further. # Azure Storage Input Module **Applies to:** Lasernet Core 11 The Azure Storage input module is used to pull files from Blob Storage or messages from a Queue, at a defined interval via the Scheduler. The setup of the module consists of two pages: **Connection** and **Command**. ## Connection In order to access the Azure Storage API, the module’s **Connection** properties must be correctly configured. ![The Connection tab for an Azure Storage Input module.](https://cdn.document360.io/c831ef63-c6b3-48ee-b443-3e33644e4e2e/Images/Documentation/azure-storage-input-module-image-t4tp6dt1.png) On the **Connection** tab, you have the following options: - **Create an “embedded” connection:** Embedded connection settings apply only to this module. - To do this, select **Embedded** from the **Azure Storage** list, then click **Edit** to configure the connection. - **Create a new global connection:** Multiple modules in this Lasernet Core configuration can share the same “global” Connection item (to centralize management of connection configuration). - To create a global **Connection** item, click **Add** beside the **Azure Storage** list. - **Use an existing global connection** - To use an existing global **Connection** item, select it from the **Azure Storage** list. - To edit its connection properties, click **Edit**. - **Use the connection specified by the DatabaseConnection JobInfo:** This module can use the global connection whose name matches the value of the DatabaseConnection JobInfo. - To configure the module to do this, select **#DatabaseConnection#** from the **Azure Storage** list. The image below shows a global **Connection** item in the **Commands** tool of Lasernet Developer. ![The Commands tool selected in the Lasernet Developer Tools menu.](https://cdn.document360.io/c831ef63-c6b3-48ee-b443-3e33644e4e2e/Images/Documentation/azure-storage-input-module-image-dzs4k82r.png) ![A Connection item in Lasernet Developer.](https://cdn.document360.io/c831ef63-c6b3-48ee-b443-3e33644e4e2e/Images/Documentation/azure-storage-input-module-image-30uuoxh8.png) For both embedded and global connections, Lasernet Developer displays a connection **Properties** window when you edit the connection. ![The properties for an Azure Storage connection.](https://cdn.document360.io/c831ef63-c6b3-48ee-b443-3e33644e4e2e/Images/Documentation/azure storage input properties(2).png) The module can use one of the following authentication methods: - **Name + Key:** Access key authentication. Requires a **Storage account name** and a **Key**. - **Shared Access Signature (SAS):** A signed URI that grants access to a specific Azure Storage resource. - **Application Registration:** Authentication based on managed application identities in Entra ID. Requires a **Client ID** and **Client Secret** (which are the application credentials that Lasernet Core will use to authenticate with Entra ID). Each of these authentication methods has specific connection properties (described in the tables below). > [!NOTE] > Note > > Global connections also have **Name** and **Description** properties to describe the Connection item itself. > [!NOTE] > Note > > You can use JobInfo substitution in any connection property value (including **SAS Token**). > [!TIP] > Tip > > After you configure the connection, test the connection: > > - **If any connection properties use JobInfos that are defined as environment JobInfos:** In the lower-left corner of the **Properties** window, select the **Environment** that Lasernet Developer must read the JobInfo values from. > - Click **Test Connection** (beside the **Environment** list) to test the connection. ### Name + Key | Setting | Description | | --- | --- | | **Endpoint suffix** | Select the Microsoft cloud that hosts the storage account. Microsoft maintains separate clouds for data residency and regulatory compliance reasons. | | **Storage account name** | All access to Azure Storage is done through a storage account. This account can be a general-purpose storage account or a Blob storage account specifically for storing objects/blobs. | | **Key** | The access key used to authenticate Lasernet Core while calling commands. | | **Development Storage** | If selected, the module connects to an Azure Storage emulator, which (for testing purposes) avoids the need for a real Azure Storage account. To use this feature, install an emulator such as Azurite, which Lasernet Core can use locally or remotely: - You can install Azurite on any server or workstation that will run or load the Lasernet Core configuration that you want to test. For example, you might install it on Lasernet Core test servers or computers running Lasernet Developer. By default, for security reasons, Azurite accepts only local requests (to 127.0.0.1). - Or, Azurite can be configured to accept remote connections, so that it is shared. If you do this, ensure that Lasernet Core can communicate with Azurite over the network. After installing Azurite, configure and run it. For more information about installing, configuring, and running Azurite, see Microsoft documentation. When **Development Storage** is selected, Lasernet Core generates a connection string that causes Lasernet Core to send Azure Storage requests to the emulator. If necessary, modify the following settings: - **HTTPS:** Specifies that an HTTPS connection to the emulator must be established. - If **HTTPS** is selected, you must configure the emulator to use a certificate. - **Hostname:** The hostname or IP address of the emulator. The default value (127.0.0.1) is equivalent to localhost. - **Port:** The port that the emulator is listening on. | | **Connection string** | If you copy a connection string for a storage account to the clipboard, this **Connection string** property can interpret it and use its content to complete the **Storage account name** and **Key** properties. Click the **Parse connection string on clipboard** button at the end of the property box. | ### Shared Access Signature (SAS) | Setting | Description | | --- | --- | | **Endpoint suffix** | Select the Microsoft cloud that hosts the storage account. Microsoft maintains separate clouds for data residency and regulatory compliance reasons. | | **Storage account name** | All access to Azure Storage is done through a storage account. This account can be a general-purpose storage account or a Blob storage account specifically for storing objects/blobs. | | **Blob Container** **Queue** | The top-level container name or the name of the queue. The property shown here differs depending on the **Type** (**Blob** or **Queue**) selected on the **Command** tab of the module’s **Properties** window. This property is optional. If you do not supply the container or queue name here, you must supply it as a property of the command. | | **SAS Token** | The SAS token generated for the storage account. | ### Application Registration | Setting | Description | | --- | --- | | **Endpoint suffix** | Select the Microsoft cloud that hosts the storage account. Microsoft maintains separate clouds for data residency and regulatory compliance reasons. | | **Storage account name** | All access to Azure Storage is done through a storage account. This account can be a general-purpose storage account or a Blob storage account specifically for storing objects/blobs. | | **Tenant Domain** | Click **…** (three dots) at the end of the value box to enter the tenant domain. | | **Client ID** | The **Application (client) ID** of the application’s Entra ID app registration. **Client ID** identifies the app. | | **Client Secret** | A client secret generated for that app registration. **Client Secret** is essentially the application’s password. | > [!WARNING] > Important > > Application Registration authentication is not applicable to Azure Storage containers that are managed by Microsoft Dynamics 365 Finance and Operations. > [!NOTE] > Note > > Implementing application registration authentication requires additional configuration in Entra ID (for the app registration) and for the specified storage account (to give that application identity permission to interact with the storage). > > > > To do that configuration, an Azure administrator must follow the instructions in [Configure Microsoft Azure to Support Lasernet Core Access to Azure Storage Through App-Registration-Based Authentication](/v1/docs/configure-microsoft-azure-support-lasernet-access-azure-storage). As part of that process, the Azure administrator will supply you the client ID and client secret that will enable you to configure application registration authentication for Azure Storage modules in Lasernet Core. ## Command Select **Blob** to download from a container, or **Queue** to fetch messages. | **Blob** | Files are downloaded from a specified Container. | | --- | --- | | **Queue** | Messages are fetched from a specified Queue. | Files and messages are deleted when polled. ### Blob ![The Command tab for an Azure Storage input module with Blob selected.](https://cdn.document360.io/c831ef63-c6b3-48ee-b443-3e33644e4e2e/Images/Documentation/azure input module blob.png) | **Container name** | (Required) The container where the BLOBs are located. Supports JobInfo substitution. | | --- | --- | | **Path** | (Optional) The path within container. Supports JobInfo substitution. | | **Metadata** | Each entry identifies a metadata field (Key) attached to the BLOB and transfers that field’s value to the specified JobInfo. | ### Queue ![The Command tab for an Azure Storage input module with Queue selected.](https://cdn.document360.io/c831ef63-c6b3-48ee-b443-3e33644e4e2e/Images/Documentation/azure input module queue.png) | **Queue name** | (Required) The queue name. Supports JobInfo substitution. | | --- | --- | ## JobInfos The following JobInfos are set for Jobs created from messages: | **AzureStorageMessageID** | GUID of the message. | | --- | --- | | **AzureStorageMessagePopReceipt** | A BASE64 encoded GUID. The value of PopReceipt is opaque to the client; its only purpose is to ensure that a message may be deleted with the Delete Message operation. | | **AzureStorageMessageDequeueCount** | The DequeueCount element has a value of 1 the first time the message is dequeued. This value is incremented each time the message is subsequently dequeued. | | **Extension** | The extension of the filename. | | **Filename** | The name of the file without the path. | | **FilenameWithoutExt** | The name of the file without the extension. | | **FullFilename** | The name of the file including the path. | | **Filesize** | The size of the file in bytes. | | **Mimetype** | Content-type of the message. |