Security change on December 1, 2026: TLS 1.2 will become the minimum standard for 365 business Print Agent. Details and system requirements
365 business development
Plugins

File Plugin

The File Plugin of the 365 business Proxy Application enables full access to local file systems, network drives and UNC paths.

It is one of the Standard Plugins and can be installed directly via the Proxy Application Clients page in Microsoft Dynamics 365 Business Central.


AL integration

All functions are provided via the code unit bdev.PRX Proxy Application (ID 5523630).

Example

In the following example, a folder is read in, an existing file is deleted if necessary and a new file with the content “Hello, World!” is created:

Code
procedure ExampleFilePlugin var files: Record "bdev.PRX File Item" temporary; proxyApp: Codeunit "bdev.PRX Proxy Application"; begin // get file list for directory "C:\temp" proxyApp.ListFiles( files, 'C:\temp' ); // check whether "hello-world.txt" exists files.Reset(); files.SetRange("Name", 'hello-world.txt'); files.SetRange("Is File", true); if (files.FindFirst()) then // if file exists, delete it proxyApp.DeleteFile(files."File Path"); // create file "hello-world.txt" proxyApp.PostFile( 'C:\temp\hello-world.txt', GetFileWithContent('Hello, World!') ); end; local procedure GetFileWithContent(content: Text) file: Codeunit "Temp Blob" var stream: OutStream; begin file.CreateOutStream(stream, TextEncoding::UTF8); stream.WriteText(content); exit(file); end;

Functions at a glance

List files (ListFiles)

Code
files: Record "bdev.PRX File Item" temporary := ListFiles([clientId: Guid,] filePath: Text [,fileFilter: Text])
Code
ListFiles(var files: Record "bdev.PRX File Item" temporary, [clientId: Guid,] filePath: Text [,fileFilter: Text])

Parameter

  • clientId: Guid (Optional)
    Specifies the ID of the proxy application client on which the operation is to be executed.
  • filePath: Text
    Specifies the path or UNC path for which the file list is to be retrieved.
  • fileFilter: Text
    Specifies the filter (e.g. *.txt) to be applied to the listing.

Return

Returns the temporary table bdev.PRX File Item, which represents the file list.


Check if file exists (FileExists)

Code
fileExists: Boolean := FileExists([clientId: Guid,] filePath: Text)

Parameter

  • clientId: Guid (Optional)
    Specifies the ID of the proxy application client on which the operation is to be executed.
  • filePath: Text
    Specifies the path or UNC path of the file.

**Returns

Returns true if the file exists.


Read file (GetFile)

Code
file: Codeunit "Temp Blob" := GetFile([clientId: Guid,] filePath: Text)

Parameter

  • clientId: Guid (Optional)
    Specifies the ID of the proxy application client on which the operation is to be executed.
  • filePath: Text
    Specifies the path or UNC path of the file.

Return

Returns Codeunit "Temp Blob" with the content of the file.


Write file (PostFile)

Attention

Please note that the file size limit is 250 MB.

Code
success: Boolean := PostFile([clientId: Guid,] filePath: Text, file: Codeunit "Temp Blob")

Parameter

  • clientId: Guid (Optional)
    Specifies the ID of the proxy application client on which the operation is to be executed.
  • filePath: Text
    Specifies the path or UNC path of the file.
  • file: Codeunit "Temp Blob"
    The file to be written.

**Returns

Returns true if the file was written successfully.


Delete file (DeleteFile)

Code
success: Boolean := DeleteFile([clientId: Guid,] filePath: Text)

Parameter

  • clientId: Guid (Optional)
    Specifies the ID of the proxy application client on which the operation is to be executed.
  • filePath: Text
    Specifies the path or UNC path of the file.

**Returns

Returns true if the file was successfully deleted.


Move file (MoveFile)

Code
success: Boolean := MoveFile([clientId: Guid,] fromFilePath: Text, toFilePath: Text [, overwrite: Boolean])

Parameter

  • clientId: Guid (Optional)
    Specifies the ID of the proxy application client on which the operation is to be executed.
  • fromFilePath: Text
    Specifies the path or UNC path of the file to be moved.
  • toFilePath: Text
    Specifies the target path or UNC path to which the file is to be moved.
  • overwrite: Boolean
    Specifies whether the file should be overwritten at the destination if it already exists.

**Returns

Returns true if the file was successfully moved.


Copy file (CopyFile)

Code
success: Boolean := CopyFile([clientId: Guid,] fromFilePath: Text, toFilePath: Text [, overwrite: Boolean])

Parameter

  • clientId: Guid (Optional)
    Specifies the ID of the proxy application client on which the operation is to be executed.
  • fromFilePath: Text
    Specifies the path or UNC path of the file to be copied.
  • toFilePath: Text
    Specifies the target path or UNC path to which the file is to be copied.
  • overwrite: Boolean
    Specifies whether the file should be overwritten at the destination if it already exists.

**Returns

Returns true if the file was copied successfully.


Rename file (RenameFile)

Code
success: Boolean := RenameFile([clientId: Guid,] filePath: Text, newFilePath: Text)

Parameter

  • clientId: Guid (Optional)
    Specifies the ID of the proxy application client on which the operation is to be executed.
  • filePath: Text
    Specifies the path or UNC path of the file.
  • newFilePath: Text
    Specifies the new name and path of the file.

**Returns

Returns true if the file has been successfully renamed.


Check if directory exists (DirectoryExists)

Code
success: Boolean := DirectoryExists([clientId: Guid,] directoryPath: Text)

Parameter

  • clientId: Guid (Optional)
    Specifies the ID of the proxy application client on which the operation is to be executed.
  • directoryPath: Text
    Specifies the path or UNC path of the directory.

**Returns

Returns true if the directory exists.


Create directory (CreateDirectory)

Code
success: Boolean := CreateDirectory([clientId: Guid,] directoryPath: Text)

Parameter

  • clientId: Guid (Optional)
    Specifies the ID of the proxy application client on which the operation is to be executed.
  • directoryPath: Text
    Specifies the path or UNC path of the directory to be created.

**Returns

Returns true if the directory has been created.


Delete directory (DeleteDirectory)

Code
success: Boolean := DeleteDirectory([clientId: Guid,] directoryPath: Text [, recursive: Boolean])

Parameter

  • clientId: Guid (Optional)
    Specifies the ID of the proxy application client on which the operation is to be executed.
  • directoryPath: Text
    Specifies the path or UNC path of the directory to be deleted.
  • recursive: Boolean
    Specifies whether the directory is to be deleted recursively.

**Returns

Returns true if the directory has been deleted.


Move directory (MoveDirectory)

Code
success: Boolean := MoveDirectory([clientId: Guid,] fromDirectoryPath: Text, toDirectoryPath: Text)

Parameter

  • clientId: Guid (Optional)
    Specifies the ID of the proxy application client on which the operation is to be executed.
  • fromDirectoryPath: Text
    Specifies the path or UNC path of the directory to be moved.
  • toDirectoryPath: Text
    Specifies the path or UNC path to which the directory is to be moved.

**Returns

Returns true if the directory has been moved.


Copy directory (CopyDirectory)

Code
success: Boolean := CopyDirectory([clientId: Guid,] fromDirectoryPath: Text, toDirectoryPath: Text)

Parameter

  • clientId: Guid (Optional)
    Specifies the ID of the proxy application client on which the operation is to be executed.
  • fromDirectoryPath: Text
    Specifies the path or UNC path of the directory to be copied.
  • toDirectoryPath: Text
    Specifies the path or UNC path to which the directory is to be copied.

**Returns

Returns true if the directory has been copied.

Last modified on