External Form Submit to SharePoint
Do you ever email a Word document to someone outside of your company, have them fill it in, and email it back to you? This appears to be a very common occurrence. The main problem with this, is that it’s very inefficient. When the document is emailed back, then the recipient has to spend time getting the data they need out of it, just by copying and pasting. Of course, big companies who have web development teams, are able to publish a public web form if they are so inclined, and customers and vendors could go there to securely fill out their information. This type of thing could be done for external forms. BUT in my experience with small to mid-size companies, or even large companies who just need to get something done quickly, people email out documents, and get them back… the inefficient way.
Don’t let this title mislead you. This isn’t about InfoPath forms, or even SharePoint list forms, and it’s not about anonymous form submission on a web page. Actually, this thing I’m showing you today is not new. It’s been around since Office/SharePoint 2007. This is SUPER useful, so I thought I’d go ahead and show you this trick. This can be done in SharePoint 2007, 2010, 2013, Office 365 (SharePoint Online), and (probably) SharePoint 2016. Note that this solution is unrelated to the concept of sharing with external users in Office 365. If you were doing that, then they’d be able to go to your site and just fill out a list form or edit a document directly. This solution is for situations where you have no way of granting the person access to SharePoint.
First, here are the high level steps:
- A content type is created, with site columns for all of the fields that need be filled out in this Microsoft Word “form”.
- A document is created in a library that uses this content type, and quick parts are inserted in the form.
- The document with quick parts in it is uploaded to the content type.
- A new file is created in the library, using this template (content type), and a copy of that file is emailed to your external person, customer, somebody outside of your company.
- That external person fills the document out and emails it back to the sender.
- The document is then uploaded back to that same library, and voila, you have a bunch of metadata captured!
Now that you have the gist of what I’m talking about, here are some more details and screenshots of how this is done. I’m creating a SOW (Statement of Work) that I need to be able to send to customers and have it returned to me.
- Go to Site Settings –> Content Types. Create a new content type called SOW. The parent content type is Document Content Types –> Document.
- Click Add from new site column, and add all of the columns you’ll need for your solution. Note that lookup fields and calculated columns don’t work well when used in Quick Parts, so I’m going to avoid them as much as possible.
- Create a document library. Go to the library’s Settings –> Advanced Settings, and enable the management of content types. Add your new content type by clicking Add from existing content types.
It’s up to you at this point if you want to delete the Document one or even just hide it.
- In your library, create a new file, of this new content type.
- Create the whole document so that it’s just like you want it to be, as a template for all statements of work. Make it look pretty, because this is your new standard.
Each time you need to have a place where the customer fills out a field, this is where you insert a Quick Part. On the Insert menu in Word, choose Quick Parts –> Document Property. There you’ll see all of the site columns that you created at step 2. See here, I have inserted my Customer Name.
- Here is another spot in the document, where I inserted a table, so that’s it’s nice and neat, and added the Quick Parts inside…
- Next, you can even lock the document down so that people can’t type wherever they want, and can only type in your fields. On the Review tab in Word, click Restrict Editing. Create a password.
- Choose the Editing Restrictions checkbox, and choose Filling in forms. Click Yes, Start Enforcing Protection. When prompted, create a password.
- Now, it’s important that you save this file (with no customer information filled out), and you can even just save it to your desktop temporarily.
- Go to your SOW content type, and click Advanced Settings. Option 1: Upload your new template directly to this page. Option 2: Put this template in a different library, and put the URL to it here. Click OK.
- When it’s time to create a file to send to a customer, click SOW (see step 4), open it in Word, and save it to give it a filename, such as the name of the customer.
- Click the File tab. This part will look a little different, depending on what version of Office you’re using, but on my Word 2016 it looks like this: Send the file as an attachment, to your external person.
- When they receive it, they edit it and save it, and then email it back to you. When you receive it, you just dump it back in the SOW library. If prompted to replace the existing file, you can go ahead and replace it. That was just the original blank on that you generated before sending it to the customer.
When you drop the file back in the SharePoint library, you’ll notice that all of the columns of metadata are filled in! Now, in my case, I’m going to have a workflow that runs when the file is modified, that will take all of that customer contact information and put it in my “customers” list, and set a status field to “SOW returned”. Note that if you are using the incoming email setting on your on premises library, and your customers are emailing directly to it, this will not trigger a workflow. Also, when you try to open up the file in Word Online, it will show it to you in Read mode, but not in online editing mode because of the restricted editing that we turned on at step 8.
Thanks for the great post!
I’ve actually been working on something very similar. I didn’t realize you could bring them back in though, that’s very cool. What if the document has “repeating” data, is it possible to pull that in as well? In my case, the teacher fills out the Word doc with information about multiple students. That is, There could be information for 5 students on one Word document. Is it possible to pull all of that in?
Shawn, unfortunately those would all have to be separate fields. So, if the table had 3 columns and 3 rows, it would be 9 different columns in SharePoint.
Clear and perfect approach to connect with External users to SharePoint. Thanks Laura…..
Is there a way to have a html form send to a SP list? I know that you can send an email to a list but wasnt sure how you would configure a basic html form to have the correct parameters for SP to know where to put everything.
Hi Marie, I’m sure there’s a way, it would just be unrelated to this method, and not out-of-box if the people filling it out have no access to SharePoint (as in this example).
Hello! I have a list in SharePoint 2010, I wanted to create a new InfoPath form that pulls all of the information from a row of the this list. I have linked to this list as the data source and I was able to use lookup to pull a listing of the site names (which is one of the data points in the list) that show as a drop down in the form. I wanted to user to be able to select from this drop (created by the lookup) and then once they have selected one it auto populates the rest of the information in the row from main data connection. Any help would be greatly appreciated!
Mike V. 🙂
Here is a way: https://support.office.com/en-ie/article/Using-lookups-to-populate-field-values-in-a-Lists-tool-ce45edeb-6aa4-4850-bccf-29ac43dcde45 . I pull from lists in multiple places on my infopath forms and it is something hard to just add in the comments. It is basically just using Rules on the drop down list to populate those fields. It will be a lot of rules since you have to set up a rule for each field.
Thanks for the information, would it be possible to see what rules would be used and how they are setup? I have tried several different ways and don’t seem to get it right – Thanks again!!!!
What rules? This solution didn’t really entail any rules. Are you referring to some other workflow that you may want to happen later, like the hypothetical one I mention at the end?
You’ll need to use the “set field value” action in a rule on the drop-down box. For each of the fields you want to populate, from each individual field in that data source. So your rule will be a list of set field value actions, for each field.
Hello Laura. Is there a similar approach with Excel files or this is working with Word only?
No, Excel doesn’t have Quick Parts like Word does.
If you’re comfortable with VBA, you can use the ContentTypeProperties method within an Excel macro to set metadata in SharePoint.
‘# Save it to the library, which will assign the properties
ActiveWorkbook.SaveAs Filename:=”https://[yourlibraryURL]” & ThisFile & “.xlsm”
‘# Set the properties
ActiveWorkbook.ContentTypeProperties(“SCM Approved On”).Value = Now()
ActiveWorkbook.ContentTypeProperties(“Approval Status”).Value = Sheets(“Sheet5”).Range(“I5”).Value
‘# Check in, which will also close the Excel window
No, Excel doesn’t have quick parts and doesn’t have a similar capability.
Thanks for the help, finally got it figured out! Much appreciated – Mike 🙂
I’m using quick parts in a document all of them are working fine except the following 2 exceptions:
1- The content of multiple line columns (with bold, underlined text) also show the HTML code instead of just the text. I can’t find a way to prevent this.
2- the format of currency columns are not kept in the word documents. I think Word overrides this with the current system settings (language and region)
I don’t know if you can help but any advise is more than welcome,
Hi Jimmy, for the multi-line text field, the only advice I have, is to make it a plain text field instead of rich text. For currency, I came across that same thing the other day, and never did figure out a way around it.
First problem solved. I can’t make the list column just plain text as we need to go beyond the 255 characters so I created a workflow variable and stored the content of the multi-line column as plain text on it. The workflow then updates the document column in a library without any HTML code.
Second problem is difficult to solve as some users will have different language/region system settings. So we leave this as is.
Thank you for you quick response!
Thank you Laura for sharing this. Find this very helpful.
Awesome tip. I’ve been doing the same thing backward for a long time. Never thought to use it for people to fill in the forms and send back. Great stuff.
Love this post, I am working on a Word form and for some reason not having a lot of luck with the Person or Group field on the form. I can fill it out in the server properties though? Any insight appreciated.
Hi Maree, People fields aren’t going to work well with those. I’d try and avoid using a Word form, and try and make it a SP list instead.
Thank you Laura – I thought I was doing something crazy wrong.
Laura, would doing this with Excel take a similar approach (I am thinking of something like a time sheet formatted in Excel) or would you suggest sticking to Word?
Duh, saw you already addressed this… Word it is. Geaux Tigers then.
This works like a charm!
Can you tell me how to use a choice column (dropdown) as a quick part that works on the Word Document outside of the SharePoint Intranet?
Thank you, Christine
Hi Christine, I’ve never tried that. I can imagine that maybe a choice field would work okay, but most likely not a lookup.
Hi, this has worked like a charm for us! We have migrated our SharePoint 2013 site to SharePoint Online and Word 2016. The original document was created in 2010.
When I made a change to the document in Word 2016 and uploading it to SharePoint Online, I get an error – Sorry, we couldn’t find your file. Was it moved, renamed or deleted? There is an OK button and it opens a blank document. Have you seen this behavior using SharePoint Online/Word 2016?
The other issue I have now is when I make a change to template and replace it, the drop down fields in the document lose all the values. Is there a step I am missing to reconnect the template to SharePoint?
So what would you suggest to represent “Choice” Content Types in the Word template? Are there any rules to also follow? I was thinking about having a multi-selection (checkboxes) as a “Choice” – what would you suggest?
Pingback: Microsoft Flow & Quick Parts | @WonderLaura
I have created a form and it usually uploads correctly. But occasionally we will drag the form into the library and none of the fields load into the library – in fact, those fields are blanked out in the form. Any ideas why this happens?
That’s frustrating, I’ve seen it happen, but I think it’s buggy, so the best way to go is to upload and not do that, especially with SharePoint on-premises.