1. Why MOVEit?

MOVEit Transfer keeps important files and data secure when information is at rest or in transit. MOVEit is ideal when you handle data that requires integrity checks, audit trails, or robust policies and controls needed to ensure confidentiality.

MOVEit enables you to verify file/payload integrity for content used from (by way of MOVEit Transfer download) or output from (Transfer upload) the MuleSoft integration platform and a MuleSoft flow or subflow in Anypoint Studio or CloudHub Design Center. Events involving MOVEit data are logged, and upload and download actions can be subjected to data loss prevention rules and anti-virus/malware inspection.

MOVEit
Tip
MOVEit Transfer is an enterprise and cloud FIPS 140-2 compliant managed file, folder, message transfer, and collaboration system.

1.1. Advantages and Capabilities

MOVEit was designed for information assurance policies that expect confidentiality, integrity, and accountability. This design helps organizations, groups, and business units adhere to data security standards such as HIPAA, SOX, PCI, and much more. MOVEit policies can be configured and refined on an organization, group, user role, and even folder-specific basis.

Some example use cases include:

  • Business critical content.

  • Patient, personnel, and customer data.

  • Signal (voice) or image (picture or video) content that includes PII (personally identifiable information).

  • Valuable predictive analytics or machine learning models.

  • And much more…​(any content or information that needs an audit trail and integrity checks when transferred or accessed).

1.2. The Ipswitch Product Family

MOVEit Transfer is part of the Ipswitch family of security, monitoring, and transfer products. The Ipswitch family of products includes:

  • WS_FTP (client and server). Secure file transfer applications.

  • MOVEit Analytics. Metrics, insights, and decision support for your managed file transfer operations.

  • MOVEit Cloud. Provides the MOVEit Transfer feature set as enabled by your subscription.

  • MOVEit on Azure. Run MOVEit Transfer on Azure (deployed directly from Azure Marketplace).

  • WhatsUp Gold. Network, device, and application management --including discovery, monitoring, site-reliability, and reporting.

  • and much more…​

2. What’s New in This Connector

The MOVEit Transfer Connector enables you to modify, get, or save important data, files, and folders by connecting to a cloud or on-premises instance of MOVEit Transfer (or both) from the MuleSoft integration platform.

Note
The MOVEit Transfer Connector available through Anypoint Exchange expects to be run on the Mule 4 Runtime.
Transfer contexts with org and status Mulesoft
Category Resources

1.

Auth Token

After you launch a Mule Flow, MOVEit Connector uses valid user credentials to retrieve an access token from MOVEit.

2.

User Management

Create and manage users and groups, roles, home folders, and other properties.

3.

Folder Management

Create folders, manage folder actions, folder contents and folder properties.

4.

File Management

• Upload payload from the Mule Integration platform.
• Download managed files and data from MOVEit.
• Manage MOVEit files.

5.

MuleSoft Flow

Your MOVEit Connector is included as one or more nodes that run within a series or sequence of other Mule applications --commonly referred to as a Flow:

A Flow defines a workflow. You initiate a Flow with a node that provides a trigger (such as duration to start-time, recurring schedule, HTTP or FTP message event, database transaction, and much more).
Flows are typically built and launched from…​ either Anypoint Studio (on premises) or Design Center (and run in "CloudHub" --the MuleSoft cloud).
Flows run against the Mule Runtime.

mule-config.xml
Your Flow configuration, (shown in the Figure as mule-config.xml) includes an entry for the MOVEit Transfer Connector and can include any one of a number of connectors and plugin modules designed to run on the Mule integration platform.

3. Before You Begin

Before you begin using the MOVEit Transfer Connector in a flow, you will need the items outlined in the following table.

Tip
If you are trying this connector and the Mule integration platform for the first time, this section and the Getting Started section provide simple examples to get you up and running.
Pre-requisite Description Notes

Choose a development environment…​

Design Center (a good place to start)
Assemble and run the examples documented in this guide to become acquainted with Mule.

Anypoint Studio.
After you become acquainted with the configuration and runtime elements of a Flow, you can take successful runs from Design Center, download the .jar file, and import/build/run them directly as an Anypoint Studio project.

Design Center is a browser-based development environment that requires Internet access.

Anypoint Studio is a desktop development environment. Its projects can be run locally or scaled out on premises.

The MOVEit Transfer connector

The connector is accessible from either Anypoint Studio or Design Center.

The instructions and examples that follow expect that you have access either to Anypoint Studio or Design Center (or both).

You can sign-up and sign-on to Anypoint Platform Design Center here.

Base path to the MOVEit Transfer server host

An instance of MOVEit Transfer that manages message, files, folders or data that you want to access.

The server must be:

  • MOVEit Transfer version 2019, 2018 SP2, or 2018 SP1.

  • Able to accept traffic from either an AnyPoint CloudHub or an AnyPoint Enterprise Edition (where fabric is run on premises).

A MOVEit Transfer Org User

Your Anypoint Exchange MOVEit Transfer configuration must include the following:

  • Valid MOVEit Transfer username/password pair

  • User’s Org ID (optional). This is necessary if the user exists in more than one org.

It is best practice to use a dedicated user with access privileges that follow the principal of least privilege when connecting to your MOVEit Transfer system.
If you create a default connection configuration

The MOVEit API Add-on

The target MOVEit Transfer system requires the MOVEit API Add-on and the corresponding license to use the add-on.

For MOVEit Transfer 2018SP1, 2018SP2, and the initial release of 2019, the add-on is subject to the terms of the MOVEit Transfer EULA.

Tip
When you create a default user and connection configuration for a Mule Flow, the username/password pair requirement becomes optional.
Note
This connector expects Mule Runtime 4.0 or later and MOVEit 2018 SP1 or later. For details, see the MOVEit Transfer Connector Release Notes.

4. Getting Started (Run Connector in Design Center)

Use these quick steps to validate your MOVEit user credentials and run the MOVEit Connector in Design Center.

GettingStarted
Your First Flow Using MOVEit Connector: Get Current User Details

4.1. Using MOVEit in Your MuleSoft Application

Table 1. Steps for Getting Your MOVEit Transfer User Details
Description Notes

1.

Open Design Center

From your web browser, navigate to the following address: https://anypoint.mulesoft.com/designcenter

2.

Create a Project

Click the Create button to create a Mule Application, name it, and:

• Select a Trigger module (such as Scheduler).
• Select MOVEit Transfer as a Target module
• Choose the function Get User Details.

3.

Delete the unneeded Dataweave transformer.

When you create your project, Design Studio automatically inserts a Dataweave Transformer upstream of the Target you selected. For this simple 'How To' it will not be used. Delete it from the Flow.

4.

Apply MOVEit Connection Information

On the Flow palette click MOVEit Connector to open it. Click the Edit link on the Update your Configuration message, and add the following:
Configuration Name. For example, Client HIPAA Information
Base Path. For example, https://org1.example.com
Username/Password.
Org ID. MOVEit Org ID (if this user belongs to more than one org).
Verify SSL Certificate. (Typically, you want this checked unless your MOVEit Transfer Server is not in a production environment.)
MOVEit Transfer Connection Information

5.

Run it, view results

• Click Run to launch the Flow.
• Open the MOVEit Transfer Get User Details module.
• Click the Output tab.

MoveItLogo

Re-use in Anypoint (optional)

As a starting point for your next development project, now that you have successfully run the MOVEit Connector in this Flow, you can download the .jar file from Design Center and import it as a MuleSoft project into Anypoint Studio.

4.2. Understanding the Flow Configuration (mule-config.xml)

When you assemble a Flow to be executed by the Mule Runtime, a configuration file contains the information necessary to load each module (such as the MOVEit Transfer Connector), inject runtime properties (such as configuration values), and run the Flow.

The typical practice for assembling this file is through the UI controls in Design Center or in Anypoint Studio. Once you create the file, you can share it, reference it from within an Anypoint Project and repurpose it.

For example, the Getting Started example yields a .jar file that contains a Mule configuration (mule-config.xml).

MuleConfig
Defining a Flow (mule-config.xml) Using the Design Center UI

The following code snippet is the mule-config.xml used for the Getting Started exercise.

Mule Flow Configuration File (Get Current User Details shown)
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <mule xmlns="http://www.mulesoft.org/schema/mule/core"
       xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
       xmlns:ipswitch-mit-mule4="http://www.mulesoft.org/schema/mule/ipswitch-mit-mule4"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core
                          http://www.mulesoft.org/schema/mule/core/current/mule.xsd
                          http://www.mulesoft.org/schema/mule/ipswitch-mit-mule4
                          http://www.mulesoft.org/schema/mule/ipswitch-mit-mule4/current/mule-ipswitch-mit-mule4.xsd">
     <configuration-properties file="mule-artifact.properties"/>

     <ipswitch-mit-mule4:config doc:id="eb8f1a56-eec8-414f-be81-06f108b2d4d8" doc:name="Client HIPPAA Information" doc:timestamp="1542671177483" name="client_hippaa_information">
         <ipswitch-mit-mule4:connection basePath="https://org1.example.com" orgId="org1" password="abc123" username="admin.org1"/>
     </ipswitch-mit-mule4:config>
     <flow doc:id="89b4bfdd-0789-407e-9d7c-64e9e0f96304" doc:name="mule scheduler to Ipswitch MOVEit Transfer Connector getCurrentUserDetails" doc:timestamp="1542395912626" name="mule_scheduler_to_ipswitch_moveit_transfer_connector_getcurrentuserdetails">
         <scheduler doc:id="20f01ec2-9acc-4056-b6f1-d6e4bc038251" doc:name="Scheduler" doc:timestamp="1542407624134">
             <scheduling-strategy>
                 <fixed-frequency frequency="36000000"/>
             </scheduling-strategy>
         </scheduler>
         <ipswitch-mit-mule4:get-current-user-details config-ref="client_hippaa_information" doc:id="3021d051-aa67-4b4b-ad54-12d7c3d4f9f7" doc:name="Get Current User Details" doc:timestamp="1542396899744"/>
     </flow>
 </mule>

4.3. Import the Project .jar into Anypoint Studio

After you assemble and run a Flow successfully in Design Center, you can download the .jar file for the Mule project and import it into your Anypoint IDE workspace. For details, see the section titled Run these Examples in Anypoint

5. Download, Upload, and Manage Files

Accessing files managed by MOVEit Transfer from a Mule Flow enables you to integrate secure input and output data into simple or complex workflows.

5.1. Simple Case: Round Trip Secure File Data

The following is a simple example of how to round-trip trusted content from MOVEit Transfer. Consider a scenario where you use the MuleSoft Integration platform to leverage data in an on demand workflow. This example shows you how to "round trip" --get trusted content from MOVEit, use/process it, and then push file changes (payload) back to a secure "In" folder.

In terms of a Mule Flow, the steps include:

  • Set a trigger for the flow to launch.

  • Download a datafile.

  • Process it (in this simple case, a large dataset is reduced).

  • Upload the secure payload back to MOVEit Transfer into a Secure Folder.

TransferRoundTrip
Download File from MOVEit, Process it, and Upload (simple file reduction shown)

This round-trip managed file transfer example applies the Flow outlined in the following table.

Sequence of Modules
Module Description Notes

1 small

(Trigger module)

HTTP Listener.
A webservice waits to request on an endpoint you choose. This example expects a call (POST, or GET) to the endpoint ReduceFile: ReduceFileTrigger

To trigger the Flow (once your Mule application service is up and running in the 'listening' or 'ready' state)

1. Copy the service hostname. CopyServiceHostLink

2. Make a call to the endpoint (for example, using cURL or your web browser):

curl -k --request POST --url http://dataexperiment-example.cloudhub.io/ReduceFile

2 small

Download File MoveItLogo

Pass in a file ID and get back a file from MOVEit Transfer.

Payload: File streamed (non-repeatable stream) to memory. For more information, see the section titled Streaming Strategies.

3 small

Transform

This module is a placeholder. It demonstrates a simple reduction operation applied to the data.

4 small

Upload File MoveItLogo

Upload payload (in this case a reduced version of the original data file) to MOVEit Transfer.

5.2. Streaming Models (downloads)

MOVEit Connector provides a new streaming capability which is ideal for processing large file downloads while avoiding webservice maximum size restrictions or disrupting bandwidth or services availability for other users.

Best practice for most cases will be to use a Non-repeatable Stream.

StreamingStrategy
Defining a Transfer Mode (Streaming Strategy) from the Advanced Tab
Tip
For a detailed reference on Streaming Strategies, see the MuleSoft documentation titled Streaming Strategies Reference.

5.3. Typical Operations

The following table outlines typical MOVEit content transfer and file management operations.

Note
For details see the MOVEit Transfer Connector Reference Guide and the "circle i" (circlei) help information in the Design Center or Anypoint Studio UI.
Message Description Notes

Upload File

Upload content, such as:
• Flow or subflow payload content.
• Module payload content.
• Variable content.

Folder ID. Required value.
Hash/Hash Type. Optional. Add signature hash of file so MOVEit can verify transfer integrity after upload.
• Supports Mule streaming.

Download File

Download payload or mule variable information to a file from MOVEit Transfer.

File ID. Required value.
Hash/Hash Type. Optional. Add signature hash of file so MOVEit can verify transfer integrity after upload.
• Supports Mule streaming.

Get File Details

Get file modified date, ownership, size, upload verification, and more.

No required arguments.

Get Files in Folder

Download files from the specified folder.

Folder ID. Required value

List Files

Get a list of files this user can access.

File access is determined by org admins, or current folder permissions, and user, group, and site policy.

Update File

Update/modify file details.

File ID. Required value.

Delete File

Delete specified file.

File ID. Required value.

5.4. Example: Round Trip Secure File Data

Mule Flow Configuration File (download, transform, and upload file shown)
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns:financialservices-locations="http://www.mulesoft.org/schema/mule/financialservices-locations" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:ipswitch-mit-mule4="http://www.mulesoft.org/schema/mule/ipswitch-mit-mule4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/ipswitch-mit-mule4 http://www.mulesoft.org/schema/mule/ipswitch-mit-mule4/current/mule-ipswitch-mit-mule4.xsd http://www.mulesoft.org/schema/mule/financialservices-locations http://www.mulesoft.org/schema/mule/financialservices-locations/current/mule-financialservices-locations.xsd http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
    <configuration-properties file="mule-artifact.properties"/>
    <ipswitch-mit-mule4:config doc:id="f188fa28-9295-4713-bda5-cd15a5dd181c" doc:name="Ipswitch MOVEit Transfer Connector" doc:timestamp="1543504185110" name="ipswitch_moveit_transfer_connector">
        <ipswitch-mit-mule4:connection basePath="https://org1.example.com" password="abc123" username="readwriteuser.org1"/>
    </ipswitch-mit-mule4:config>
    <financialservices-locations:config doc:id="0217fff5-876b-497e-b980-4545549a2637" doc:name="financialservices-locations" doc:timestamp="1542136566321" name="financialservices-locations"/>
    <http:listener-config doc:id="5e586ab1-d033-4a19-a716-d8302d94ce4c" doc:name="CloudHub HTTP" doc:timestamp="1543502454068" name="cloudhub_http">
        <http:listener-connection host="0.0.0.0" port="${http.port}"/>
    </http:listener-config>
    <flow doc:id="e8dec2b1-9545-49ef-aef7-04917934a78c" doc:name="mule scheduler to Ipswitch MOVEit Transfer Connector downloadFile" doc:timestamp="1541702018633" name="mule_scheduler_to_ipswitch_moveit_transfer_connector_downloadfile">
        <http:listener config-ref="cloudhub_http" doc:id="dd0c71ea-37b5-4052-88de-f7542b5daec8" doc:name="Listener" doc:timestamp="1543502460955" path="ReduceFile"/>
        <ipswitch-mit-mule4:download-file config-ref="ipswitch_moveit_transfer_connector" doc:id="5bfad922-19ab-4e01-b282-ab5b35d9081e" doc:name="Download File" doc:timestamp="1543515901884" id="527031615" outputEncoding="utf-8" outputMimeType="application/json"/>
        <ee:transform doc:id="099a0e38-7b44-4d1c-9bb8-bd60a899d441" doc:name="Transform" doc:timestamp="1541714770784">
            <ee:message>
                <ee:set-payload><![CDATA[%dw 2.0
output application/json
---
{
 order: {
     'type': 'Airline Records',
     'csvData': payload.data,
 }

}]]></ee:set-payload>
            </ee:message>
        </ee:transform>
        <ipswitch-mit-mule4:upload-file-to-folder config-ref="ipswitch_moveit_transfer_connector" doc:id="2b163cf7-43e3-4379-97a8-6ec04b6cea1c" doc:name="Upload File To Folder" doc:timestamp="1543504842877" filename="TransformedFile.json" folderId="530122379" inputStream="#[payload]"/>
    </flow>
</mule>

6. Manage Auth Tokens

Applications and connectors can use OAuth2 to retrieve or renew an auth token needed to transact with a deployed MOVEit Transfer Server. Where much of this behavior is automatic and normally part of the connector’s default configuration, this section can be helpful if you need to apply tokens directly from within your Mule application Flow.

Tip
Typically, MOVEit connector operations use default connection profile. You can use this section if you feel the need to override this behavior.

6.1. Switch Users Mid Flow (Get/Revoke Token)

There are two mechanisms for applying tokens to your Mule Flow:

  • Normal. Use the default MOVEit credentials and target host with most of the connector operations. Credentials are Flow properties passed to the deployed MOVEit Transfer Server and an auth token is requested as part of the operation.

  • 'In Flow' Call. You can add a MOVEit Get Token connector that enables/expects non-default user credentials and applies a grant type of password or refresh_token.

You can configure a default user for a Mule Flow instead of explicitly getting and revoking auth tokens until you need to override this default. The default user scenario is illustrated in the section titled Getting Started.

To override the default, such as when you need to sign on as a different user or a user affiliated with a different org, you can fetch, renew, and cancel (revoke) an auth token using the auth token management operations (Get Token and Revoke Token).

6.2. Why Manage Access Tokens Directly?

This section is important when you encounter scenarios where you feel you need to manage user scope and duration of auth explicitly. These scenarios include:

  • Change user in the middle of a Flow.
    Apply privileged access management measures, for example.

  • Change orgs in the middle of a Flow.
    Some users belong to multiple orgs.

  • Batch execution of user-level operations.
    Per-user onboarding, validation, and testing, aggregation across orgs, and much more.

Direct Access Operations
Message Description Notes

Get Token

Retrieve or Renew an access token.

Given the specified username/password pair, use OAUTH2 to get an access token. (Grant Type = "password")

Given a valid refresh token, provide the refresh token (Grant Type = "refresh_token") to get a new token.

Revoke token

Notify server that token is no longer in use.

Revoking the token is best practice after use.

Note
After the initial password token grant, it is best practice to use access tokens when you access MOVEit Transfer.

6.3. Example: Apply Access Token for Non-default User

This section demonstrates simple 'in flow' leverage of Get Token. This example is helpful for scenarios where your task needs to change MOVEit users or orgs within the course of a single flow.

SessionTokenLoc
Simple Flow to Get and Revoke a Token

This example flow applies the sequence outlined in the following table.

Sequence of Modules
Module Description Notes

1 small

(Trigger module)

Scheduler shown here just for simplicity.

2 small

Get Token MoveItLogo

Pass in user/password pair and get back an access token and a refresh token.

Payload: User-specific token object containing both auth and auth refresh tokens.

3 small

Set Variable

Save auth token to a Flow-wide variable.

4 small

(MOVEit operation) MoveItLogo

Get Current User shown here for simplicity.

MOVEit connector operation uses the current auth token to query current user details. You can use Java property syntax to get the variable value. For example:
#[vars.accessToken]

5 small

Revoke Token MoveItLogo

After current user transactions for the current user with MOVEit are complete, notify MOVEit that it can cancel the auth token for this user.

Canceling active auth tokens that are not needed is best practice.

Simple Flow to Get and Revoke a Token (mule-config.xml)
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:ipswitch-mit-mule4="http://www.mulesoft.org/schema/mule/ipswitch-mit-mule4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/ipswitch-mit-mule4 http://www.mulesoft.org/schema/mule/ipswitch-mit-mule4/current/mule-ipswitch-mit-mule4.xsd">
    <configuration-properties file="mule-artifact.properties"/>
    <ipswitch-mit-mule4:config doc:id="2ac7a7d3-7759-4839-b1ef-9312698e1122" doc:name="Ipswitch MOVEit Transfer" doc:timestamp="1542658184256" name="ipswitch_moveit_transfer">
        <ipswitch-mit-mule4:connection basePath="https://org1.demo.ipswitch.com"/>
    </ipswitch-mit-mule4:config>
    <flow doc:id="7c44252c-de48-4960-a3bd-c97153924f28" doc:name="mule scheduler to Ipswitch MOVEit Transfer Connector getToken" doc:timestamp="1542656979883" name="mule_scheduler_to_ipswitch_moveit_transfer_connector_gettoken">
        <scheduler doc:id="dbab4ffb-c804-4360-99fa-71c8838de6e0" doc:name="Scheduler" doc:timestamp="1542672277624">
            <scheduling-strategy>
                <fixed-frequency frequency="6000000"/>
            </scheduling-strategy>
        </scheduler>
        <ipswitch-mit-mule4:get-token config-ref="ipswitch_moveit_transfer" doc:id="bf97d573-3646-4b20-8218-95a41c1a7495" doc:name="Get Token" doc:timestamp="1542658803347" grantType="password" password="abc123" targetValue="#[payload]" username="admin.org1"/>
        <set-variable doc:id="863e9d45-7a33-451d-9329-8b3fda0431ae" doc:name="Set Variable" doc:timestamp="1542660084324" value="#[payload.accessToken]" variableName="accessToken"/>
        <ipswitch-mit-mule4:get-current-user-details accessToken="#[vars.accessToken]" config-ref="ipswitch_moveit_transfer" doc:id="c33aa221-57dd-4abd-bce5-93fc324e0e29" doc:name="Get Current User Details" doc:timestamp="1542660258637"/>
        <ipswitch-mit-mule4:revoke-token config-ref="ipswitch_moveit_transfer" doc:id="a5beea25-ff1b-4a7f-b7e3-055e67d2594d" doc:name="Revoke Token" doc:timestamp="1542660344705" token="#[vars.accessToken]"/>
    </flow>
</mule>

7. Manage and Onboard MOVEit Users

This section outlines MOVEit Transfer user management operations available from your MuleSoft Flow. User management from a Flow provides benefits including:

  • Integrating managed file transfer/access into workflows where it is needed.

  • Applying consistent user access and tracking to secure files and messages.

  • Batch-level user operations and much more…​

Note
Most user management operations require admin-level permissions.

7.1. Simple Case: Get My User Information

The simplest case for using this library is to check the information for the current user. To do this, simply run Get User Details with the User ID set to "self". This works for all levels of registered user --such as TempUsers, Admins, and Users (often referred to as "regular users").

Tip
Using Get User Details (Self) is a useful way to judge if the current user has the appropriate level of user role needed to perform create, modify, and delete management actions.
GetMyAttributes
Get the Current User’s Information (shown with HTTP Listener trigger)

This example yields a JSON properties object including the permission field value that indicates that the current user has MOVEit Transfer Admin permissions.

Simple Flow to Get Current User Details
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:ipswitch-mit-mule4="http://www.mulesoft.org/schema/mule/ipswitch-mit-mule4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd http://www.mulesoft.org/schema/mule/ipswitch-mit-mule4 http://www.mulesoft.org/schema/mule/ipswitch-mit-mule4/current/mule-ipswitch-mit-mule4.xsd">
    <configuration-properties file="mule-artifact.properties"/>
    <http:listener-config doc:id="fec5aec0-9606-4dc9-b270-c4fd93ae5ae4" doc:name="CloudHub HTTP" doc:timestamp="1542833290194" name="cloudhub_http">
        <http:listener-connection host="0.0.0.0" port="${http.port}"/>
    </http:listener-config>
    <ipswitch-mit-mule4:config doc:id="6be2ceda-9734-4d41-9004-d71e9ba8dcd8" doc:name="Ipswitch MOVEit Transfer Connector" doc:timestamp="1543248338060" name="ipswitch_moveit_transfer_connector">
        <ipswitch-mit-mule4:connection basePath="https://org1.example.com" password="myuserspassword" username="batchadmin" verifySslCert="false"/>
    </ipswitch-mit-mule4:config>
    <flow doc:id="038bc620-6b7e-44d6-bd23-892cb3765102" doc:name="HTTP Listener Config" doc:timestamp="1542832638849" name="http_listener_config">
        <http:listener config-ref="cloudhub_http" doc:id="ecc07f4e-1074-450f-be31-270e4f938464" doc:name="Listener" doc:timestamp="1543255004801" path="launcher2"/>
        <ipswitch-mit-mule4:get-user-details config-ref="ipswitch_moveit_transfer_connector" doc:id="d952b839-a4a3-4661-bcf5-9a1eb5e321c4" doc:name="Get User Details" doc:timestamp="1543254961546" id="self"/>
    </flow>
</mule>
Sample Output
{
  "defaultFolderID": 531575630,
  "fullName": "API admin User",
  "username": "batchadmin",
  "homeFolderID": 531575630,
  "statusNote": "",
  "lastLoginStamp": "2018-11-26T17:56:39.94",
  "displaySettings": {
    "liveViewPageSize": 25,
    "userListPageSize": 10,
    "fileListPageSize": 100
  },
  "emailFormat": "HTML",
  "expirationPolicyID": 0,
  "passwordChangeStamp": "2018-11-26T15:44:41.517",
  "forceChangePassword": false,
  "receivesNotification": "RECEIVESNOTIFICATIONS",
  "status": "ACTIVE",
  "authMethod": "MOVEITONLY",
  "email": "apiuser@example.com",
  "folderQuota": 0,
  "notes": "",
  "orgID": 5567,
  "permission": "ADMIN",
  "id": "6q751q2emrfrfte4",
  "language": "en"
}

7.2. Typical Operations

The following table outlines typical MOVEit User Management operations.

Note
For details see the MOVEit Transfer Connector Reference Guide and the "circle i" (circlei) help information in the Design Center or Anypoint Studio UI.
Managing MOVEit Users
Message Description Notes

Create User

Onboard MOVEit Transfer User

Admin-level user role required.

Delete User

Remove a MOVEit Transfer User

Admin-level user role required.

Update User

Modify user information.

Admin-level user role required.

Get User Details

Retrieve role and properties for a user.

For required User ID parameter, you can specify either:
Self. To get my information (current user).
any-user-id. Specify a user ID for the user.

Get Current User Details

Retrieve role and properties for current user.

Retrieves same information as Get User Details (Self).

Get Groups of User

Retrieve current groups specified user belongs to.

Get User Group Members

Get a list of members back for a given Group.

7.3. Example: Create a MOVEit Transfer User

CreateUser
Simple Flow to Create a User
Simple Flow to Create a MOVEit User
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:ipswitch-mit-mule4="http://www.mulesoft.org/schema/mule/ipswitch-mit-mule4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd http://www.mulesoft.org/schema/mule/ipswitch-mit-mule4 http://www.mulesoft.org/schema/mule/ipswitch-mit-mule4/current/mule-ipswitch-mit-mule4.xsd">
    <configuration-properties file="mule-artifact.properties"/>
    <http:listener-config doc:id="fec5aec0-9606-4dc9-b270-c4fd93ae5ae4" doc:name="CloudHub HTTP" doc:timestamp="1542833290194" name="cloudhub_http">
        <http:listener-connection host="0.0.0.0" port="${http.port}"/>
    </http:listener-config>
    <ipswitch-mit-mule4:config doc:id="6be2ceda-9734-4d41-9004-d71e9ba8dcd8" doc:name="Ipswitch MOVEit Transfer Connector" doc:timestamp="1543248338060" name="ipswitch_moveit_transfer_connector">
        <ipswitch-mit-mule4:connection basePath="https://example.ipswitch.com" password="abc123" username="batchadmin" verifySslCert="false"/>
    </ipswitch-mit-mule4:config>
    <flow doc:id="038bc620-6b7e-44d6-bd23-892cb3765102" doc:name="HTTP Listener Config" doc:timestamp="1542832638849" name="http_listener_config">
        <http:listener config-ref="cloudhub_http" doc:id="ecc07f4e-1074-450f-be31-270e4f938464" doc:name="Listener" doc:timestamp="1543249668970" path="launcher"/>
        <ipswitch-mit-mule4:create-user config-ref="ipswitch_moveit_transfer_connector" doc:id="f15b7bfb-079c-46e7-8866-e4e73499ab05" doc:name="Create User" doc:timestamp="1543247135643">
            <ipswitch-mit-mule4:create-user-input email="anyuser@example.com" fullName="Emma Smith" homeFolderInUseOption="ALLOWIFEXISTS" homeFolderPath="esmith" orgID="5406" password="myuserspassword" permission="USER" username="esmith"/>
        </ipswitch-mit-mule4:create-user>
    </flow>
</mule>

8. Manage Folders

Content managed by MOVEit can be organized and subject to access permissions and policies applied to folders. Folders can use a strict, inherited policy of user access control, or can be permissive and collaborative (while maintaining an audit trail and even while applying DLP rule checking).

For convenience, consistency, and alignment, you can manage many folder operations from within your Mule Flow. Before you can write to or download a folder, you need read or write access (respectively) to that folder.

8.1. Simple Case: Get List of Folders

Use the List Folders operation to return a list of folders the current user can access.

The following example Flow gets a list of folder properties objects available to the current user (effectively the folders accessible to the user) and then uses the Transform module to reduce it to a list of folder paths in the MOVEit Transfer org together with the time they were last changed.

GetFolderList
Get Folder List
Get Folder Objects from MOVEit and Reduce to List of Pathnames and Modified Dates
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:ipswitch-mit-mule4="http://www.mulesoft.org/schema/mule/ipswitch-mit-mule4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd http://www.mulesoft.org/schema/mule/ipswitch-mit-mule4 http://www.mulesoft.org/schema/mule/ipswitch-mit-mule4/current/mule-ipswitch-mit-mule4.xsd http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
    <configuration-properties file="mule-artifact.properties"/>
    <http:listener-config doc:id="d37f6f94-97d7-4599-a135-4455d9ef38e7" doc:name="CloudHub HTTP" doc:timestamp="1543260555751" name="cloudhub_http">
        <http:listener-connection host="0.0.0.0" port="${http.port}"/>
    </http:listener-config>
    <ipswitch-mit-mule4:config doc:id="45bcc7f0-d607-4794-a191-8248a8621f59" doc:name="Ipswitch MOVEit Transfer Connector" doc:timestamp="1543272282819" name="ipswitch_moveit_transfer_connector">
        <ipswitch-mit-mule4:connection basePath="https://org1.example.com" password="mypassword" username="apidownload" verifySslCert="false"/>
    </ipswitch-mit-mule4:config>
    <flow doc:id="55fcd403-be77-484b-85e3-2db90181017e" doc:name="HTTP listener to Ipswitch MOVEit Transfer Connector listFolders" doc:timestamp="1543260467040" name="http_listener_to_ipswitch_moveit_transfer_connector_listfolders">
        <http:listener config-ref="cloudhub_http" doc:id="03739e3b-32c3-4153-865a-6aedf0303810" doc:name="Listener" doc:timestamp="1543260602982" path="listfolders"/>
        <ipswitch-mit-mule4:list-folders config-ref="ipswitch_moveit_transfer_connector" doc:id="95e783e3-87c5-41a3-b2b0-6db654f74eac" doc:name="List Folders" doc:timestamp="1543262594867"/>
        <ee:transform doc:id="d1293d60-35e1-42ca-b2ab-5cadb7b6e49c" doc:name="Transform" doc:timestamp="1543271723755">
            <ee:message>
                <ee:set-payload><![CDATA[%dw 2.0
output application/json
---
{
Folders: {
    'List of Accessible Folders': [
    {
        path: payload.items.path,
        time: payload.items.lastContentChangeTime
    }
]
}
}]]></ee:set-payload>
            </ee:message>
        </ee:transform>
    </flow>
    <flow doc:id="b8db05b0-fc72-4915-8867-3ede086e40c0" doc:name="HTTP listener to Ipswitch MOVEit Transfer Connector downloadFile" doc:timestamp="1543271984131" name="http_listener_to_ipswitch_moveit_transfer_connector_downloadfile">
        <http:listener config-ref="cloudhub_http" doc:id="4ddfd562-b2c8-4a0c-9dff-9f1957ee8f29" doc:name="Listener" doc:timestamp="1543272268877" path="launchdownload"/>
        <ipswitch-mit-mule4:download-file config-ref="ipswitch_moveit_transfer_connector" doc:id="3e5f2fcb-9544-4dd5-bbc8-7a9dd9431357" doc:name="Download File" doc:timestamp="1543272787540" id="531529292"/>
    </flow>
</mule>
Sample Output
{
  "Folders": {
    "List of Accessible Folders": [
      {
        "path": [
          "/",
          "/Home",
          "/Home/admin.org1",
          "/Home/admin.org1/Downloads",
          "/Home/FinanceShare",
          "/Home/FinanceShare/IN",
          "/Home/Mulesoft Flow User"
        ],
        "time": [
          "2018-11-26T16:28:19",
          "2018-11-26T15:44:41",
          "2018-11-09T17:00:11",
          "2018-11-09T17:00:11",
          "2018-11-21T20:24:07",
          "2018-11-21T20:24:07",
          "2018-11-09T16:40:51"
        ]
      }
    ]
  }
}

8.2. Typical Operations

The following table outlines typical MOVEit Folder Management operations.

Note
For details see the MOVEit Transfer Connector Reference Guide and the "circle i" (circlei) help information in the Design Center or Anypoint Studio UI.
Message Description

Copy File to Folder

Copy file from specified folder to a specified folder.

Create Subfolder

Create a subfolder in the target folder.

Delete Folder

Delete a folder from MOVEit Transfer.

Get Files in Folder

Download files from the specified folder.

Get Folder Access Controls

Get folder access control information.

Get Folder Content

Get list of folder contents.

Get Subfolders in Folder

Get subfolders in the current parent folder.

List Folders

Get a list of all folders the current user can access.

Update Folder

Update folder attributes and access information.

Upload File to Folder

Put file in specified target folder.

9. Run these Examples in Anypoint Studio

Follow these instructions, when you are ready to run, clone, and re-purpose any of the examples in this guide using the Anypoint Studio interactive development environment.

Tip
These instructions are helpful if you have used Anypoint Studio or other similar interactive development environments and you have a .jar to import from Design Center, such as one produced from the section titled Getting Started.

The steps include:

Description Notes

1.

Download the package (.jar)

From your web browser:
1. Navigate to Design Center
2. Find a Flow you can run successfully, and click the Flow’s name.
   (Flow edit view opens.)
3. Download the Flow’s package (.jar file).
    For example:
    DownloadTheJar

2.

Import the package to Anypoint

Open Anypoint Studio, and:
1. From Anypoint Studio, import the .jar file (File > Import).
(The Anypoint Studio Import Select dialog box displays)
2. From the Import Select dialog box, Select Anypoint Studio > Packaged mule application (.jar) as the import wizard to apply to the import action, then click Next.
3. From the Import Mule Project dialog, browse and choose a .jar file to upload. For example:
Import
4. Click Finish and if you are prompted, allow Anypoint to retrieve required build dependencies by clicking Perform Update at the Update your Workspace dialog.
(An update status bar displays, completes, and your Flow project is loaded.)
AnyPointFlow

3.

Build and Run.

1. From the Project Menu, choose Build All.
2. After your project completes building, select the Run menu, and then choose Run.

10. Deploying My Mule Application

You can choose to deploy your Flow as a MuleSoft application or even scale it out once it gets closer to production quality. For more information, see the section in the MuleSoft documentation titled Deploying an Application