A simple e-mail notification system for Survey123 for ArcGIS

30398
46
11-30-2017 09:01 AM
IsmaelChivite
Esri Notable Contributor
18 46 30.4K
IMPORTANT NOTE: Content in this blog post has been revised in the https://community.esri.com/groups/survey123/blog/2018/01/22/a-simple-e-mail-notification-system-for-... blog post.  The new blog as an improved version of the content and Python script.

I constantly get requests from people who want to configure an e-mail notification system on top of Survey123 for ArcGIS.  The idea is simple: notify someone via e-mail every time a new survey is submitted.

There are different approaches to do this. I have seen some organizations configure ArcGIS GeoEvent Server in ArcGIS Enterprise for this purpose. It works pretty well and provides a great deal of flexibility, but not everyone has the luxury of having GeoEvent at hand. I have seen clever database triggers been written and also FME Server workflows for automating e-mail notifications.

In this blog, I will describe a technique for doing this with a Python script and Windows Task Scheduler. Essentially, Windows Task Scheduler will run a Python script at a regular interval that you can define. The Python script will connect to your survey's feature service, look for any added records, and then connect to your own corporate e-mail server to send notifications accordingly.

Many thanks to Mark Smith from Esri's Applications Prototype Lab who patiently worked on this Python script.

While the Python script may not format the e-mail message exactly as you need, I hope that at least will give you a starting point from which you can write the exact logic that  matches your needs.  Below are step by step instructions so you can configure this Python script with your own survey.

Configuring your ArcGIS Online feature layer

For the script to work you need to enable an option in your survey's feature layer called 'Keep track of created and updated features' .  This is not to be confused  with Editor Tracking.  This option helps the Python script determine if any changes have been made in your feature service.

  1. Login into ArcGIS Online and open the Details page of your survey's feature layer.
  2. Switch to the Settings tab and make sure the 'Keep track of created and updated features' option is checked as shown in the screenshot below.

Configuring the Python script

Next we need to configure the Python script. Since you will want this script running unattended every at a regular interval, I suggest you choose a computer which will always running and connected to the internet.  Your laptop, which you may disconnect from time to time or take home is not a good choice. Choose either a desktop computer which is always on or even better a server managed by your IT department.

The script requires Python 3.x to run and the 'requests' Python module installed.  If the computer already has ArcGIS Pro installed, you already have Python 3.x and the 'requests' module installed. However, ArcGIS Pro is not required to run this script so you can install Python 3.x and then the 'requests' module.

Now you can download and configure the script as follows:

  1. Download the Detect Changes and Notify Python script and its associated init.json file and save them together within a folder in your computer.
  2. Edit and save the init.json file. At the very least, you will need to change the properties highlighted  in blue below. 
    • recipients: This is the e-mail that will be receiving notifications. You can create an email alias if you want several people to receive the email.
    • from: This is the e-mail of the person/organization that is sending the e-mail. You can also set it to a DoNotReply email address.
    • server: This setting refers to your email server connection properties which are defined as a comma separated list of strings. 
      • The first parameter is the host of your email server which can be specified by hostname or IP address. It will look something like smtp.yourCompany.com for example or smtp.gmail.com
      • The second parameter is optional and defines the port where the SMTP server is listening. Common ports are 25 and 587 but it could really be anything depending on how your mail server is configured.
      • The third and fourth parameters are also optional and are used to set a user and password to access your email server.
To properly get the email  server connection properties, you will really want to contact your IT department and describe what you are trying to achieve as many email servers are configured with strict security policies that will prevent the script from successfully connecting and using your corporate e-mail server.  Folks in your IT department should know how to give you the right hostname and port for  your email server. Handing over the source code of the Python script may be of help too.

If you want to configure this script using your Gmail,  You will need to configure your Gmail account with 2-step verification, and then setup a Gmail App password.  Once you have done that, use your complete Gmail e-mail address as the user (third parameter) and the App password for the fourth parameter.  When using Gmail you do not need to specify a port number.
    • fsURL: This is the URL of your survey's feature service. 
    • serviceuser and servicepw: The credentials of an ArcGIS Online account with access to the feature service.

{
    "email":
        {

          "recipients": ["jsmith@acme.com"],
          "from": "cityofACME@acme.com",
          "subject": "Changes detected in your service",
          "text": "You are receiving this e-mail because records have been added, updated or deleted in:\n",
          "server": ["smtp.acme.com", "", "",""]
        },    
    "service":
        {

          "fsURL": "https://services2.arcgis.com/fJJEXNgxjn0dpNsi/arcgis/rest/services/service_871ea76e106e4b1ab671ecc1e...",
          "serviceuser": "username",
          "servicepw": "password",
          "fsLayerNum": 0,
          "viewerURL": "http://arcgis.com/home/webmap/viewer.html",

          "viewerMapLevel":19
        },
    "filenames":
        {
          "layergens": "layergens_ms.json"
        }
}   

After saving changes to the init.json file, it is time to give the script  a quick test:

  1. Run the script once so it can capture the current state of your feature service.
  2. Submit one record to your feature service and run the script again.

If any errors occur during execution, an error text file will be created in the same folder where you saved the Python script.

Scheduling the script

The Windows operating system includes a simple utility called Task Scheduler. It is quite easy to setup. Once you have determined  when the script will be triggered for the first  time, you can repeat its  execution at regular intervals. For example, every 5 minutes. Obviously, the computer where  you setup the task will need to be running all the time, although you can configure the task to run regardless of who is logged in.

The configuration of tasks in the scheduler is pretty much self-explanatory, but here are some specific instructions that can save you some back and forth:

  1. General: Check the option to run with highest privileges and set the task to run even if you are not logged-in.
  2. Trigger: If you want to quickly test your task, you can simply select your task in the gallery and then hit Run in the Selected Item panel on the right.  When configuring the task for real, I suggest you select the startup trigger and that you also configure the task to run indefinitely every five or ten minutes or so.
  3. Actions: You will need to be particularly careful with this one. The Program/Script setting needs to point to the Python executable (Python.exe).
    • If using your own copy of Python, refer to the installation directory of Python where you will find Python.exe
    • If using Python from ArcGIS Pro, it will be under the Pro installation directory. For example: C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe"

You also need to indicate the location of your DetectChanges.py Python script as an argument. Do not forget to include the .py extension in the path. If the path to your DetectChanges.py file includes spaces, then you need to enclose the path with quotes. Lastly, set the 'Start in' property so it points to the  directory in which you are storing the DetectChanges.py file.

Beyond the basics

The technique described in this blog post is a bit rudimentary, but it  may do its job reasonably in some simple scenarios. You can manipulate the Python script to properly format the email message to be sent, and also to apply some logic to determine if a n email needs to be sent, and to who.  Since you are in 'Python land' already, you can get creative and import the arcpy.mapping module to do all sort of sophisticated things in the script. You can for example take the incoming feature added into your feature service and do a straight (buffer) or network distance (closest facility) search to determine who will be notified.

We are working on some more flexible ways to make notifications via e-mail, SMS, voice call etc simpler with Survey123. We plan on adding some specifics about this before the end of the year in our Early Adopter Program. In the meantime, you may want to play with the approach outlined here as it may work just well for you.

46 Comments
AnthonyJonesRSK
Occasional Contributor II

Hi Ishmael,

Thanks for this it's a feature we've been after for a while. I'm having a bit of trouble getting the email notification to work though. Can I use a gmail account as the sending email? I've tried the server settings with "smtp.gmail.com", "587" and "465" but am not having much luck. Are there other settings I need to include? Apologies as my experience with python and json is pretty much non-existent!

Kind Regards

Anthony

IsmaelChivite
Esri Notable Contributor

Hi Anthony. The script at the moment is really setup to work with a simple smtp email server, typicalle running within your firewall, rather than through GMail, but I will look into this. There are some articles out there describing how to work with Gmail in Python such as this https://pybit.es/python-smtplib.html   I will research a bit and see how far this could be taken. 

AnthonyJonesRSK
Occasional Contributor II

Thanks Ismael. I did try it with my work Outlook server but again couldn't get it to work. I will need to speak to my IT team to see if they can assist although they're not always the most approachable! Under the server section of the json file is any other information required for more complex email set ups other than the server name and port? Just so I know what to ask our IT team for.

Oh and thanks for all the great work on Survey123. We've just used it for a 15 page household survey in Africa and it's worked an absolute treat with many of the local surveyors preferring it to the traditional paper surveys.

IsmaelChivite
Esri Notable Contributor

Hi Anthony. I added more details to the Red note in the blog where I describe how to setup the server connection properties. I made some changes in the code so we can handle Gmail like you want. Please download the source code again and follow instructions carefully.  Let me know how it goes!

AlexP_
by
Occasional Contributor III

Hello,

Would these work with Collector for ArcGIS? What about Workforce for ArcGIS (I am research about it and not sure if it has notify included or not)? Please advise. Thank you.

IsmaelChivite
Esri Notable Contributor

Hi Alex. Yes! It will work with ANY app. The Python script is really looking at your feature service, so even if you add your features  from ArcGIS Pro, Collector, Workforce a GeoForm, Web app or anything... it will trigger the email.

AlexP_
by
Occasional Contributor III

This is awesome. I will check it out! Thank you!

AnthonyJonesRSK
Occasional Contributor II

Thanks Ismael, that's fantastic! After a bit of trouble initially, which I realised was our firewall blocking my access to gmail, I managed to get this working on our public wifi connection. This is going to be very useful so thanks a lot for your efforts.

I've noticed that you receive an email for each change to the feature service. Is there a way to configure this to just inform you of the last change say if you just had the script run once each morning? I suppose my concern is that feature services that undergo a lot of changes may result in inboxes getting bombarded. Even in its current form though this is going to be great for making our surveys more widely available to the company.

Thanks!

JamesTedrick
Esri Esteemed Contributor

Hi Anthony,

To create a summary e-mail instead of oner per feature, you would need to modify the parseattributes functions (lines 257-283).  You would need to construct the full message from the parts (the msg variable inside the for loop, which is the feature-by-feature processing part) and have the sendMail function outside the for loop.  A quick version of this (not trusting this post to keep indentation correct; lines 258, 282-284 are the modifications):

GlenGardner1
New Contributor III

Is there an issue using this with non HTTPs:// Urls. I'm receiving this message when running in IDLE.

raise MissingSchema(error)
requests.exceptions.MissingSchema: Invalid URL 'https//gistest.freshfromflorida.com/arcgis/rest/services/DPI/Tomato_Commodity_Collector/FeatureServer//0?f=pjson&token=hstq6tS5lgKwV77OfG4oRYkD1zrtFTdEl-GiSsoiCWlnouy6nFdlvP536SB4xhWm2XC7_EqAN2Q4Tg_qV-LAIdoBB2s-I5U5MComJSeDSqOwTks10-gsGEcSBU-bPkYd': No schema supplied. Perhaps you meant http://https//gistest.freshfromflorida.com/arcgis/rest/services/DPI/Tomato_Commodity_Collector/Featu...?

JamesTedrick
Esri Esteemed Contributor

Hi Glen,

it looks like your URL starts with https// , not https://

GlenGardner1
New Contributor III

James,

the URL I'm using is just http://. I think somewhere in the python code it's trying to add the "https//".

{"fsURL": "http://gistest.freshfromflorida.com/arcgis/rest/services/DPI/Tomato_Commodity_Collector/FeatureServe...",

JamesTedrick
Esri Esteemed Contributor

Hi Glen,

One thing that I should have mentioned- this script is taking advantage of a change tracking feature that was introduced this year in ArcGIS Online and is coming with ArcGIS Enterprise 10.6 - it won't work with your ArcGIS Server. Additionally, I see that your https certificate on your server has expired - you should update that regardless

AnthonyJonesRSK
Occasional Contributor II

Thanks for this James, looks like I'll have to scrub up on my python skills.

BrianCulpepper
New Contributor III

Hello Ismael and James,

Thanks for this post!  It's very helpful, and with a little help from a co-worker (Tim Sexton) I was able to leverage gmail to serve the notification email(s).    I did have to specify port 587 and username/password following your instructions, but

there was also an edit needed within the original python script:

 Near line 296 change:  smtplib.SMTP(servername) to smtplib.SMTP(servername, srvrInfo[1])

then for the "server" config section in the json file, include the port number:

["smtp.gmail.com","587","googleusername","googleapp_password"]
The python script was missing the port information for the connection.

Have a great friday! 

Brian C.

IsmaelChivite
Esri Notable Contributor

Thanks Brian for the catch! Source code updated with your fix.

TSVGIS
by
New Contributor II

Hi James,

I am sending emails out from forms to indicate "Trail Status" for Taos Ski Valley. Many people like it. Like with all the projects that I have brought to production there are always "tweeks".

I am looking for a way to send the email output as HTML.

Any clues would be greatly appreciated.

I noticed that when I generate a report from survey123 website using an iPad. it creates "link html.DOCX". I like this as it opens a web browser and uses my template.

Thanks for all you do,

JamesTedrick
Esri Esteemed Contributor

Hi James,

I'd suggest looking at 18.1.11. email: Examples — Python 2.7.14 documentation - the last example shows how to set up HTML in an e-mail.

GlenGardner1
New Contributor III

I moved the feature service to ArcGIS Online Hosted and  I am still not getting it to run. Any help would be appreciated. This is what I get when running in IDLE.

Status = Failed
Checking the result
Traceback (most recent call last):
File "C:\Test_TCS_SITES\DetectChanges.py", line 382, in <module>
main(configfilename)
File "C:\Test_TCS_SITES\DetectChanges.py", line 135, in main
changetype = resultjs['responseType']
KeyError: 'responseType'
>>>

Lake_Worth_BeachAdmin
Occasional Contributor III


Traceback (most recent call last):
  File "Z:\Code\DetectChangesANDnotify\DetectChanges.py", line 23, in <module>
    from email.message import EmailMessage
ImportError: cannot import name EmailMessage

TSVGIS
by
New Contributor II

James, (thank you so much for the good information)

You pointed me at the exact place to create an HTML email. I put HTML into the "msg" parameter.

I commented out "sendmail" 

Script still grabs cfg from .init file yet needs the mime part to be populated with values to send email.

#You must import two modules

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

#this is the HTML "wrapper" for the email

msg = msg + '<tr><td>{}</td><td>{}</td></tr><table border = "1">\n'.format(falias, val)
htmlTop = '<html><head><body></head><table style="width:100%"><table border = "1">'
htmlBot = '</body></table></html><table border = "1">\n'
msg = htmlTop + msg + htmlBot

htmlMsg = MIMEText(msg,'html')

# This is the mime attachment part of the script

htmlMail = MIMEMultipart('alternative')

htmlMail["Subject"] = cfg['email']['subject']
htmlMail['From'] = cfg['email']['from']
htmlMail['To'] = "Address.skitaos.com" #cfg['email']['recipients']
htmlMail.attach(htmlMsg)

s = smtplib.SMTP("SMTP.SKITAOS.COM")
s.sendmail(cfg['email']['from'],"Address.skitaos.com",htmlMail.as_string())
s.quit()

Below is what the output looks like in the body of the email

# you can configure text in "open" and "closed" within survey123

#if(selected(${Lower_Frontside_Green},'Strawberry_Hill')and selected(${qual}, 'yes'), '<font color="green"><b>OPEN<b></font>' , '<font color="red"><b>CLOSED<b></font>')

# I used a conditional statement to populate open or closed from a select multiple question (everything is closed) unless you select it.

#Ski patrol sends a survey from WiFi iPad and record is detected with script (it is mailed to distribution list setup using outlook)

#script is running on server that is maintained by IT support system (battery and generator backup)

Thank you ESRI staff and James Tedrick 

This leverages my organizational account to provide reporting to all that need it (and it comes directly from ski patrol)

PatrickOsei_Darko
New Contributor

Hi Ismael, I find you post very useful, but Ive been having issues installing the requests/pipenv I get this errror whenI  try to follow the steps in installing pipenv " Could not find a version that satisfies t No matching distribution found for pipenv"

I will be grateful for your assistance please. Thanks

JamesTedrick
Esri Esteemed Contributor

Hi Patrick,

What version of Python is installed on your computer?

PatrickOsei_Darko
New Contributor

Hi james,

I am using Python 3.6.4. thanks

JamesTedrick
Esri Esteemed Contributor

Hi Patrick,

Also, to check, if you open a command line window and type 'python', the Python shell starts up?  From the sounds of it, the most likely issue is that the Python installation is not present in the PATH variable in Windows.  python - How to add to the pythonpath in windows 7? - Stack Overflow  provides instructions for setting this.

PatrickOsei_Darko
New Contributor

Hi James,

Please I am still having same errors haven gone through the steps, please can I suggest we set up a short skype call for you to assist me?

BeckyColwell-Ongenae
New Contributor III

I get the same error.  Any thoughts on this?  Thank.

Traceback (most recent call last):
  File "C:\Users\rcolwell\Documents\DetectChangesv2\DetectEdits.py", line 19, in <module>
    from email.message import EmailMessage
ImportError: cannot import name EmailMessage

JamesTedrick
Esri Esteemed Contributor

What version of Python are using?  It looks like you might be using version 2.x; the script is written for 3.x.

BeckyColwell-Ongenae
New Contributor III

Thanks!  That was it.  I guess I thought I had that part covered because I have ArcGIS Pro2.1 installed on this machine.  I appreciate your response though, as it forced me to check!

danbecker
Occasional Contributor III

thanks for the inspiration!

I did something very similar, but created a PDF via XML/XSLT.

  • survey123 sets ${already_emailed} = 'NO' by default
  • query hosted feat. service for already_emailed = 'NO', return FeatureSet (bummer how this doesn't contain domains) via REST
  • query domain info for each field via REST: /service_1232/FeatureServer/layerID
  • logged BUG-000111606, queryDomains doesn't work for hosted feat. services
  • set already_emailed = 'YES' via REST: /applyEdits
  • open template XML file, loop over featureSet. Populate fields, use XML attributes to specify field has domain/not.
  • style XML file using XSLT template via Etree module. This exports an .html file
  • Convert .html to .pdf via pdfkit module
  • Email PDF report to project manager via cronjob

Best part is that all we have to do is point this .py to a new hosted feat. service (survey123 database) and it will start firing off new reports based on any fields!

EricLutz
New Contributor

Hi Ishmael and James,

I am looking for a way to update a AGOL feature layer whenever a Survey is submitted. For instance, whenever a hydrant is flushed and record is submitted from Survey, the LastFlushed date will be updated for the hydrant layer. After reading this post, I think that I may use the similar approach. Instead sending a email, a REST post could be sent to update the feature. Before I give a try, I'd like know is this the best way to do? Is there a way to execute a REST post along with the Survey submission?

Thanks,

ming

MarkBennett
Occasional Contributor

Oops, I logged in with another user name. Please replay to this one instead the post above.

Ming

Lake_Worth_BeachAdmin
Occasional Contributor III

the features are automatically updated when a new form is submitted, try using the refresh interval in map viewer if you're not seeing the updates.

MarkBennett
Occasional Contributor

Hi Joe,

I may not explained clearly. The survey is based a flushing table related to hydrant feature layer.  Every time when a survey is submitted, a new records is added to the table and I users can see it.  However, the feature layer is NOT edited. Therefore, I'd like to have a way to update the LastFlushed field after a survey is submitted.

Thanks,

Ming

JamesTedrick
Esri Esteemed Contributor

Hi Ming,

Yes, the script above could be modified to do an update on features via REST.  Some familiarity with the REST API, particularly Query (Feature Service/Layer)—ArcGIS REST API: Services Directory | ArcGIS for Developers or Query Related Records (Feature Service)—ArcGIS REST API: Services Directory | ArcGIS for Developers  (to find the correct record and Apply Edits (Feature Service/Layer)—ArcGIS REST API: Services Directory | ArcGIS for Developers (updating the record) would be required.

The equivalent area in the ArcGIS API for Python (which would be a little friendlier) isarcgis.features module — arcgis 1.4.2 documentation 

danbecker
Occasional Contributor III

I do something similar; default when survey123 form is submitted is already_emailed = NO. I just run the .py via task scheduler, kick out an email with a PDF report, then set already_emailed = YES via REST API.

Here's some pseudo code, (no code bashing please )

def gentoken(username, password, referer, expiration=5):  
    query_dict = {'username': username,  
                  'password': password,  
                  'expiration': str(expiration),  
                  'client': 'referer',  
                  'referer': referer,  
                  'f': 'json'}
    tokenUrl = "https://ourportal.com/portal/sharing/rest/generateToken"        
    tokenResponse = urllib.urlopen(tokenUrl, urllib.urlencode(query_dict))     
    token = json.loads(tokenResponse.read())            
    if "token" not in token:  
        print token['messages']  
        exit()  
    else:  
        # Return the token to the function which called for it  
        return token['token']
def applyUpdates(featureList,accessToken): #returns json string of POST reply
    payload = {'updates': json.dumps(featureList),
                'token': accessToken,
               'useGlobalIds': 'true',
               'f': 'json'}
    query_string = urllib.urlencode(payload)
    q = "/applyEdits"
    url = baseURL + layerID + q
    req = urllib2.Request(url,query_string)
    resp = urllib2.urlopen(req)    
    return json.loads(resp.read())
#URL of hosted feature service
baseURL = 'https://ourportal.com/server/rest/services/Hosted/service_9ca0ddc438704f38970558c39a245ef1/FeatureServer/'
#layer id in feature service we want to work with
layerID = '0'
#REST query string
where = '"already_emailed" = ' + "'NO'"
#REST query fields
fields = '*'
#lets get a token   
token = gentoken(USERNAME, PASSWORD, REFER)

#construct REST query
query = "/query?where={}&outFields={}&returnGeometry=true&f=json&token={}".format(where, fields, token)
fsURL = baseURL + layerID + query

fs = arcpy.FeatureSet()
#load json string from server into feature set
fs.load(fsURL)
#convert json string from server into py dictionary
pDict = json.loads(fs.JSON)
#unecessary, but lets load our edited feat dict to a new list to send back to server
newFeatList = []

for feat in pDict['features']: #returns list of features
    newDict = {}
    newDict['geometry'] = feat['geometry']
    glid = feat['attributes']['globalid']
    oid = feat['attributes']['objectid']
    newDict['attributes']={'globalid':glid,'objectid':oid,'already_emailed':'YES'} #editing already_emailed here
    newFeatList.append(newDict)
MarkBennett
Occasional Contributor

Hi Dan and James, 

 

Thanks for reply!  I started to write the code and it seem I am on the right track!

This is my second Python project and is a good practice for me. 

Ming

by Anonymous User
Not applicable

Thank you for this script. However, I can't seem to get past this error:

I configured the Feature Service as indicated:

..and adjusted the json accordingly..I would note that not adding the '6' at the end of the 'fsurl' results in additional errors.

I spoke with IT to ensure the SMTP settings were correct and they are. Currently at a loss with the error because I can otherwise access my feature service directly in the browser...

Just looking for some direction as to how to troubleshoot further..

Thanks

JamesTedrick
Esri Esteemed Contributor

Hi Anthony,

The issue is the fsURL setting in your init file - you are pointing to the feature layer (/FeatureServer/6) and not the feature service (just /FeatureServer/) - the number is specified (in your case correctly) in the fsLayerNum setting.

by Anonymous User
Not applicable

James,

Hello and thanks for the input. However when stating the json statement as originally intended I get a KeyError:

I played around with the init file and thus my original post. In fact if I manipulate further:

I get this:

Of course the error is an invalid query parameters but removing "../6/query " from the string takes me back to my original error.

JamesTedrick
Esri Esteemed Contributor

Hi Anthony,

Can you confirm you are using the latest posted version of the script?  I am seeing a major line discrepancy - the line 116 in your error message is line 135 in the version I downloaded today to examine.  In particular, it looks like you might be missing the code that loops through the job status to await the change report.

by Anonymous User
Not applicable

Hi,

I was wondering if Webhooks or this notification system works with Collector. We collect species data using Collector and want to setup a notification system so that when a specific type of observation is made, the concerning department is notified. Any advice/ suggestions will be greatly appreciated.

Thanks

PJ

JamesTedrick
Esri Esteemed Contributor

 PJ,

Currently webhooks do not work with Collector.

rzufelt
Occasional Contributor

Has anyone got this to work with "fsLayerNum" = anything other than 0 ?

It works just fine if I use layer zero.  But, if I try any other fsLayerNum in the same hosted feature layer(s), I get the response error as @GlenGardner1 shows above.

 

 

Traceback (most recent call last):
  File "\\a19\detect_data_changes\DetectChanges.py", line 380, in <module>
    main(configfilename)
  File "\\a19\detect_data_changes\DetectChanges.py", line 135, in main
    changetype = resultjs['responseType']
KeyError: 'responseType'

 

 

@JamesTedrick  I also noticed that no error file is written for this error.

Thanks,

R_

RhettZufelt
MVP Frequent Contributor

Turns out that since I had already ran it on layernum = 0, the  layergens file created is specific to that layer.  If I ran layer 1 intitally, then the error is reported when trying to switch the layer number in the init.json to layer 0.  Even deleteing the layergen file doesn't "reset" it.

Simply changing the layernumber in the init.json doesn't work.  You need to also have a different layergens file for each layer that you want to run this against, then all seems to be running fine.

 "layergens": "unique_name_4_each_layer.json"

 R_

JerrySneary
New Contributor III

Hi @IsmaelChivite or @JamesTedrick 

I know this is an old post and now you can use Zapier or Make to send out instant email notifications. I have a form set up for people to RSVP, and I've been asked if I can send out notification emails of the upcoming event to the people who have RSVP. Is there a way to send future notification emails?

Kind regards,

Jerry