Run a Workspace in Response to Incoming Email

Liz Sanderson
Liz Sanderson
  • Updated

FME Version

  • FME 2023.0

Introduction

This article will set up an automation in FME Flow (formerly FME Server) to run when an email with a specific keyword in the subject line arrives, using a shapefile attached to the email as workspace input.
 

Requirements

  • Access to an email with IMAP OR Access to an FME Instance with a DNS record 
  • Licensed FME Flow FME Form (formerly FME Desktop)

 

Step-by-Step Instructions

1. Create a New Automation
Log into FME Flow. On the left-hand menu, expand Automations and select Create Automation. 

1_BuildAutomations.jpg
 
2. Configure the Trigger to Check for Received Email
A Trigger will be already on the canvas when starting a new automation, ready to configure. Double-click on the Trigger to open the parameters. Choose one of the following two protocols to monitor email:

  1. FME Flow email via SMTP protocol
  2. External email account via IMAP protocol 


Method 1: FME Flow email via SMTP protocol

This method will cause emails sent directly to FME Flow to initiate a workflow. See the FME Flow Documentation for details.
 
*Note: The SMTP protocol will only work if you use an FME Flow instance with a proper DNS record (the server is accessible over the internet). This includes any FME Flow Hosted (formerly FME Cloud) instance. See Tutorial: Email in FME Flow for more details.
If your instance of FME Flow is running locally or on an intranet, you must use IMAP below.
 
On the Automations canvas, double-click the Trigger node. Select Email - SMTP (Received) Trigger drop-down menu. Input an Email User Name to assign an email address on the FME Flow host system that will receive notification emails. There is no need to specify the domain; if you want an email sent to RunMyWorkspace@fmeflowhost to trigger the automation, enter only “RunMyWorkspace.”
 
Since you can create a unique email username for each automation triggered by SMTP, no parameters to further filter messages are available in this trigger. You may still set up Filter Actions downstream if you wish to do additional routing. Choose or create a Resource directory to download email attachments (e.g., Data/IncomingEmail/), click Validate and (if valid) Apply.

2_SMTP.jpg
 

Method 2: External email account via IMAP protocol

This method will poll an external email account for new mail. See the FME Flow Documentation for details.
 
Note that your email provider may impose restrictions on polling frequency and that your email account must be set up for FME Flow to interact with it using IMAP. Please refer to your email provider’s documentation for details.
We recommend creating and using an application password for the email account you’re monitoring. This will reduce the likelihood of failures to poll by FME Flow, as the email provider may consider it a security concern. Each email provider should have instructions on how to create this password.
 
On the Automations canvas, double-click the Trigger node. Select Email - IMAP (Received) from the Trigger drop-down menu.  You will need to enter details of the IMAP Server to which you wish to connect; the Load Template button allows you to populate the required fields with information from several popular providers.
 
Input an IMAP Email Account to poll for new mail and enter its associated IMAP Email Password. You may want to change the polling interval, as external email providers may refuse the connection if FME Flow polls too frequently.

3_IMAP.jpg
 
Accept the default to fetch new emails only and filter the subject line of incoming emails for the word Shapefile. If you use your external email account for purposes other than this automation, it is critical to include an identifier in the subject line of any email meant to trigger this automation; otherwise, you will be overrun with failed jobs!
 
Since this automation will pass a shapefile that is attached to an email to a workspace on FME Flow, we need a home for those attachments. Click the ellipsis button to the right of the Download Attachments To field and specify a Resource folder to house any incoming email attachments (e.g., Data/IncomingEmail/). FME Flow will store all attachments from an email in a single directory.
Click Validate and (if valid) Apply.

4_IMAP_2.jpg 

3. Publish a Workspace to FME Flow
Download the ShapefileToGeoJSON.fmwt workspace from the Files section of this article (it's contained within the GettingStartedWithAutomations folder). This workspace can accept zipped Shapefiles as an input and then outputs them as GeoJSON. 

5_ShapefiletoGeoJSON.jpg

Open the workspace in FME Workbench, then publish the workspace to FME Flow. To learn how to publish a workspace to FME Flow, see the Publish a Workspace to FME Flow and Run It article. Publish the workspace to a Repository called Automations, and ensure Job Submitter is enabled as the Service. 
When supplying data for this workspace, it is important to archive (zip) your shapefile (any single-file archive supported by FME will do) because the attachment file path passed from the Trigger to Actions downstream will only point at the first attached file.
If multiple files must be accessed from the same incoming email, you can create an automation to download all files to a directory and then another automation to watch for and route the files created there.

6_Publish.jpg

4. Configure an Action to Run the Workspace
Return to the automation in FME Flow. Double-click the silhouetted Next Action component if you have guides enabled to open the parameters.

7_NextAction.jpg

If Hide Guides was previously selected from the Automations menu, you’ll need to click on the component tray in the lower left of the canvas and drag out an orange Action component.

image1.png

In the Action parameters, select Run Workspace as the Action. Then select Automations as the Repository and ShapefileToGeoJSON.fmw as the workspace. 

8_ChooseWorkspace.jpg

Now to set the published parameters. Click on the drop-down arrow next to Source Esri Shapefiles, expand Email, and select Email Attachment. This is an upstream message, and it will use the data incoming from the Email Trigger component email attachment. 

9_EmailAttachment.jpg

Next, select a destination folder for the GeoJSON file. Create a new resource folder in the Data folder called Output. Click Apply to save the parameters. 

10_DestinationGeoJSON.jpg
 
5. Save Your Work and Start the Automation
To preserve your progress, click Menu above the Automations canvas, then Save As. Save the automation as Run Workspace from Email, then optionally add some descriptive tags, then click OK. Finally, click Start Automation in the upper right.

11_ShapefiletoGeoJSONAutomation.jpg
 
6. Test Email and View Log
Send an email with a zipped shapefile (buildingupdate.zip is provided above in the GettingStartedWithAutomations.zip available for download in the Files section) to the email account monitored by your Trigger. Ensure that the email subject contains the word “Shapefile” so it will pass the filter.

 12_Email.jpg
 
Wait for at least one polling interval, in this case, one minute, then check the Automation log. One way to do this is through Menu > View Log File when your Automation is displayed on the screen. You can also navigate to Automations > Manage, check the box next to the automation and select Actions > View Log File. It can be helpful to click the clock icon above the log to show timestamps for each log entry.

13_ViewLog.jpg
 
If you check the Automation log file, you should see a tag <PUBLISHED_PARAMETER name="SourceDataset_ESRISHAPE"> that contains the file path of the shapefile fed into your workspace. Paste the text above into the log search bar if you’re having trouble locating the entry. 

14_BuildingUpdate.jpg

You can confirm the attached file was downloaded successfully by navigating to the Resource folder you specified in the Trigger and looking for a new subfolder named in the log entry.
 

Conclusion

Well done! You created an automation that is triggered by incoming email and runs a workspace. Now you’re ready to add any number of your own workspaces or other tasks to an email-based workflow!
 


Data Attribution

The data used here originates from open data made available by the City of Vancouver, British Columbia. It contains information licensed under the Open Government License - Vancouver.

Was this article helpful?

Comments

0 comments

Please sign in to leave a comment.