Forms in SharePoint Online

Hi
we have SharePoint online - E1 Plan. We need to create some custom forms with meta data, that look up lists, have attachments, workflow etc..would you suggest javascript in SPO or would you suggest a provider hosted app - store the app in SQL Azure..? thoughts
..pro's , con's?
thx
nsco2

I think a lot of it depends on whether you need server side code to attach to an external data source, etc.  If you need Server side code then use a provider hosted app.  If you can do it all in javascript then a SharePoint hosted app or just
a page with a Content Editor Web Part would be easier.
Paul Stork SharePoint Server MVP
Principal Architect: Blue Chip Consulting Group
Blog: http://dontpapanic.com/blog
Twitter: Follow @pstork
Please remember to mark your question as "answered" if this solves your problem.

Similar Messages

  • How to migrate sharepoint 2010 infopath form to sharepoint online.

    how to migrate SharePoint 2010 infopath form to SharePoint online.

    Hi Partha,
    You use powershell script to migrate infopath forms from SP 2010 to SP Online. But you need to be careful about external connections used in infopath forms(web service connections etc.) because they might required to be changed. So, for data connections,
    use of Data Connection Library is a preferable way or you can write a powershell script to update the data connections also.
    You can find the sample script from the below url:
    https://drive.google.com/file/d/0B_mYrpgMRd3IbHdpZkNBLVNhd1k/view?usp=sharing
    Best Regards,
    Brij K

  • Follow-up question about forms and SharePoint Online

    I asked a question about life after InfoPath earlier, and got a good answer:
    http://social.technet.microsoft.com/Forums/sharepoint/en-US/fb23b3d9-8a09-4267-aab5-09929f6a3082/life-after-infopath-seeking-advice
    After looking at all of the limitations of SharePoint Online, I'm wondering how developers are dealing with the limitations. Lets say you are asked to develop something that has complex logic, including fetching data from external web services, dynamically
    displaying parts of a process to people depending on role, and ending up with a printable document. In our on-premises environment, InfoPath is well suited to this task, with some code behind for some things. Or, if not using InfoPath, we would use application
    pages and workflow.
    Neither of those are available in SharePoint Online, so what would you do?

    Some things, such as the conditional display of content, can be done via JavaScript. More advanced items, such as integrating external web services would likely require a SharePoint "app". A SharePoint app is essentially a link to a separate site
    that is running an asp.net web app (or PHP, or whatever). This asp.net site can do anything it needs with any web services, or conditional formatting, or anything. Because it's registered as a SharePoint app, it can also call back into the SharePoint site
    and work with data. So, a SharePoint App could present the user with a robust form that simply sends the data back to a SharePoint list. The SharePoint app can also be surfaced on the SharePoint site itself in an iframe, so the user won't know that the form
    is hosted by another server.
    By the way, the ideas behind the app model permeate the entire SharePoint environment: instead of having the SharePoint server itself run all kinds of custom business logic, that workload is handled by other servers, so the SharePoint servers can be focused
    on running the core bits of SharePoint. InfoPath puts a large load on the servers, so it's out.  XSLT list views also put a load on the server, so they're also out. SSRS is an amazingly fantastic tool, but is not supported in the cloud (and there's no
    alternative). Timer jobs, event handlers, workflow, and many other things have been re-architected to take the load off the SharePoint servers.
    Mike G.

  • Infopath2013 button in secondary view not visible on form in SharePoint online

    We have a SharePoint list that has gotten its Form with Infopath.
    The infopathform has 2 views:
    Userview and Fullview.
    The Userview has some fields and a submit button and is activated when adding a new item in the list.
    The Fullview is active when opening a list item. The open form will not show the additional button that resides in the Fullview.
    Any ideas how to get the button to show?
    brgs
    Bjørn

    Hi,
    Could you please explain about "additional button"? Do you mean other list fields or "Save"/"Cancel" button?
    If you mean list fields, you could manually drag them to this view from Fields.
    If you mean "Save"/"Cancel" button, by default, there are some ribbons under Edit Tab as below:
    Regards,
    Rebecca Tu
    TechNet Community Support
    Please remember to mark the replies as answers if they help, and unmark the answers if they provide no help. If you have feedback for TechNet Support, contact
    [email protected]

  • Adding multiple attachments to Infopath form for Sharepoint Online

    I don't get the option to add a repeating section into the infopath form to allow multiple attachment in the section.  I initially created the form from the sharepoint list and not from blank in infopath and then connecting to sharepoint.
    Although i would be happy to get the multiple attachments in the same section i would prefer to add an attachment option to each part of the form.  Currently i would need to add 10 separate attachments. 
    Is there code available to do this in SharePoint designer 2013?  if yes, can you provide the code in need with instructions?
    if there is another way to achieve this then please let me know.  thanks
     

    Hi,
    Per my knowledge, IWConvertedForms library seems to contain references to all lists and libraries where the item template has been customized to use an InfoPath form.
    You can access it through
    https://sitename/IWConvertedForms/Forms/AllItems.aspx
    However, there is no method to get the template link and download to edit the template.
    You need to get both the XML file and the original InfoPath form template that was deployed to SharePoint.
    For more information, you can refer to:
    How to open an InfoPath form and template that were moved or copied
    Best Regards,
    Linda Li
    Linda Li
    TechNet Community Support

  • Develop Form and Workflow in SharePoint Online and On-Premise

    Hi Expert,
    I have the question about Form and Workflow in SharePoint Online vs ShrePoint On-Premise
    Current Problem : Customer is implemented Form and Workflow in SharePoint Online but they have a problem some features that didn’t work in SharePoint Online. I will have a meeting to discuss Do and Don’t Form and Workflow in SharePoint Online compare SharePoint
    On-Premise.
    Please suggestion.
    Thank you

    Hi MasterBird,
    There is no documentation to explain the difference of the custom form and workflow between SharePoint Online and SharePoint On-Premise. For your issue, you can have a look at the following blog:
    http://www.techrepublic.com/blog/the-enterprise-cloud/get-infopath-forms-and-sharepoint-online-with-office-365/
    https://support.office.com/en-us/article/Office-365-known-issues-6b380978-84ce-49af-be5d-f7cda0fe28f9?ui=en-US&rs=en-US&ad=US#__sharepoint_online_preview
    https://support.office.com/en-in/article/Configure-InfoPath-Forms-Services-a8609546-c0d7-4956-81b6-08e93eb4b290?ui=en-US&rs=en-IN&ad=IN
    http://blog.sharepointlearn.com/2011/11/03/sharepoint-in-office-365-the-good-the-bad-the-brilliant-and-the-ugly/
    Thanks,
    Eric
    Forum Support
    Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Subscriber Support, contact
    [email protected]
    Eric Tao
    TechNet Community Support

  • How can I create a contact form for sending emails in SharePoint Online?

    Dear Forum members,
    I´ve got a question about creating a custom contact form to send emails for a public site in SharePoint online.
    Could someone help us with some advise?
    In advance, thank you very much.
    Kind regards,
    Frits

    You can create Custom list and make alerts enable to send emails as soon as contact created.
    Bala

  • Anonymous User forms in Sharepoint 2013 Online (Office 365)

    I'm using Sharepoint 2013 online with Office 365.
    Is there any way for an anonymous user to communicate with the site using forms (preferably Infopath)?
    There are many, many versions of this question on the web, but most answers seem to talk about features I just don't have in Office 365 Sharepoint - such as Application Management in Central Administration, which just isn't there.
    The only feature I can find is the Excel Survey in Form Templates. This is at least a start, but what I really want is the ability for an anonymous user (a customer) to submit information into a Custom List using a form; or, second best, in an email (WITHOUT
    having to have Infopath Filler installed). this is all do-able for a fully-subscribed user of the intranet site, but I can't afford to buy individual subscriptions for all my customers. Nor do I want them seeing each other's data, or accessing my intranet!
    I have spent so long researching this and getting nowhere, and really need to know if it's just a straight 'no, it's impossible', or keep trying.
    Thanks
    Jonathan

    Hi Jonathan,
    According to your description, my understanding is that you want to enable anonymous user with forms in SharePoint 2013 Online.
    There is a Sandbox solution from CodePlex, it manages anonymous access on Office 365 / SharePoint 2013. Please have a try.
    https://anonymous365.codeplex.com/
    In addition, I am not an expert for SharePoint 2013 Online, I suggest you create a new thread on SharePoint Online forum, more experts will assist you with SharePoint Online.
    SharePoint Online forum:
    http://social.technet.microsoft.com/Forums/en-US/home?forum=onlineservicessharepoint
    I hope this helps.
    Thanks,
    Wendy
    Wendy Li
    TechNet Community Support

  • Anonymous User forms in Sharepoint 2013 Online

    I'm using Sharepoint 2013 online with Office 365.
    Is there any way for an anonymous user to communicate with the site using forms (preferably Infopath)?
    There are many, many versions of this question on the web. Several lead to
    http://claytoncobb.wordpress.com/2011/06/03/infopath-allowing-anonymous-users-to-submit-forms-in-sharepoint-2010/, but this is about Sharepoint 2010, not 2013. Other answers talk about features that are not in Sharepoint online 2013, such as Application
    Management in Central Administration. There is also a Sandbox solution from CodePlex that gets touted,
    https://anonymous365.codeplex.com/, but this fails in Sharepoint Online 2013.
    The only feature I can find is the Excel Survey in Form Templates. This is at least a start, but what I really want is the ability for an anonymous user (a customer) to submit information into a Custom List using a form; or, second best, in an email (WITHOUT
    having to have Infopath Filler installed). Seems a pretty basic need, really - letting your customers place orders. This is all do-able for a fully-subscribed user of the intranet site, but I can't afford to buy individual subscriptions for all my customers.
    Nor do I want them seeing each other's data, or accessing my intranet!
    I have spent so long researching this and getting nowhere, and really need to know if it's just a straight 'no, it's impossible', or keep trying.
    Thanks
    Jonathan

    Thanks pramod7
    Yes, I am using the public site. But unless I'm missing something, Custom Lists (and associated forms) cannot be exposed to anonymous users. They are just not in the permissions list.
    I can create a page in the public site and add a Form Templates web part. The options I then get for creating a new form in the Form Templates library are Word Document, Excel Workbook, Powerpoint Presentation, One Note Notebook or Excel Survey. An
    InfoPath form is not an option. None of these (as far as I can see) allow for any data entered in the 'form' by a user to be stored in a Custom List for further processing. Most require the user to have Word/Excel/whatever on their machine, rather than
    just use the browser. The nearest you get is the Excel Survey, which at least regularises the data entered by an anonymous user into columns in a spreadsheet, but this is not sophisticated enough for, say, an online ordering system in which you would not want
    customers seeing each other's orders.

  • Unable to get User Information in infopath form hosted on sharepoint online(2013)

    Im trying to retrieve user information (department, Manager, Work E- Mail, Etc..) into an infopath form hosted in sharepoint online using "/_vti_bin/UserProfileService.asmx"
    web service. But it returns me an error when im opening the form as :
    An error occurred while
    trying to connect
    to a
    web service. Error ID 5566
    Any idea about how to get those  information into a form which hosted in Office365 environment?
    Thanks.

    I believe this is a known issue:http://support.microsoft.com/kb/2674193/en-us

  • Form and Workflow in SharePoint Online vs SharePoint On-Premise

    Hi Expert,
    I have the question about Form and Workflow in SharePoint Online vs ShrePoint On-Premise
    Current Problem : Customer is implemented Form and Workflow in SharePoint Online but they have a problem some features that didn’t work in SharePoint Online. I will have a meeting to discuss Do and Don’t Form and Workflow in SharePoint Online compare SharePoint
    On-Premise.
    Please suggestion.
    Thank you

    Hi MasterBird,
    For SharePoint 2013 On-premise, we can :
    Comlete control of our environment and data
    Supports heavy customization
    Keep sensitive information in-house
    Easier integration into line of business systems
    Full development options for developers
    For SharePoint Online workflow:
    Workflow 2010 & 2013 are available with Standard and Enterprise Editions without having to install
    If using Windows Azure workflow functionality is the same as 2013
    Cannot create custom Visual Studio workflows
    For InfoPath Form Services you will need Office 365 Enterprise Could Edition or SharePoint Online Plan 2
    More information, please refer to the video:
    http://www.youtube.com/watch?v=eNtCH3qOk2g
    Best Regards,
    Wendy
    Forum Support
    Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Subscriber Support, contact
    [email protected]
    Wendy Li
    TechNet Community Support

  • SharePoint online 2013 event receiver error

    I am currently working on a SharePoint online project. My code generates 6 documents in 6 different document libraries along with other metadata. When I save data to a List, the event receiver fires and creates all the 6 documents. But sometimes it stops creating
    the 6 documents and left with 1 or 2 documents. Sometimes documents has been created but without any metadata.
    The same code is working fine in my on-premises environment, but it sometimes breaks in the Office 365 environment. I also created a log list to track the issue as we cannot debug in Office 365. In the log list I found a error message saying "Thread was
    being aborted." Below is my code. please help it is happening only in Office 365 environment.
    namespace ExcelGen.ExcelGenReceiver
    using System;
    using Microsoft.SharePoint;
    /// <summary>
    /// List Item Events
    /// </summary>
    public class ExcelGenReceiver : SPItemEventReceiver
    /// <summary>
    /// The template URL
    /// </summary>
    private const string TemplateUrl = "/Quotation Analysis Electrical/Forms/Quotation Analysis Sheet ELEC_Blank.xlsm";
    /// <summary>
    /// The template url1
    /// </summary>
    private const string TemplateUrl1 = "/Quotation Analysis Mechanical/Forms/Quotation Analysis Sheet MECH_Blank.xlsm";
    /// <summary>
    /// The template url2
    /// </summary>
    private const string TemplateUrl2 = "/TenderSummaryLib/Forms/TenderSummaryBlankMaster1.xlsm";
    /// <summary>
    /// The RFI template URL
    /// </summary>
    private const string RfiTemplateUrl = "/EstimatingRFI/Forms/RFI Schedule MASTER.docx";
    /// <summary>
    /// The drawing template URL
    /// </summary>
    private const string DrawingTemplateUrl = "/Tender and Drawing Schedule/Forms/Tender Document Drawing Schedule.docx";
    /// <summary>
    /// The tender return template URL
    /// </summary>
    private const string TenderReturnTemplateUrl = "/Est_Tender_Pricing_Document/Forms/Tender Pricing Document blank.xlsm";
    /// <summary>
    /// The project number
    /// </summary>
    private string projectNumber = string.Empty;
    /// <summary>
    /// The project name
    /// </summary>
    private string projectName = string.Empty;
    /// <summary>
    /// The no bid
    /// </summary>
    private string noBid;
    /// <summary>
    /// The team
    /// </summary>
    private string team;
    /// <summary>
    /// The description
    /// </summary>
    private string description;
    /// <summary>
    /// The status
    /// </summary>
    private string status;
    /// <summary>
    /// The electrical
    /// </summary>
    private SPUser electrical;
    /// <summary>
    /// The mechanical
    /// </summary>
    private SPUser mechanical;
    /// <summary>
    /// The document date
    /// </summary>
    private DateTime? docDate;
    /// <summary>
    /// The tender received
    /// </summary>
    private DateTime? tenderReceived;
    /// <summary>
    /// The tender return
    /// </summary>
    private DateTime? tenderReturn;
    /// <summary>
    /// The pre construction program start date
    /// </summary>
    private DateTime? preConstructionProgramStart;
    /// <summary>
    /// The pre construction program end date
    /// </summary>
    private DateTime? preConstructionProgramEnd;
    /// <summary>
    /// The sector
    /// </summary>
    private string sector;
    /// <summary>
    /// The design build
    /// </summary>
    private string designBuild;
    /// <summary>
    /// The build type
    /// </summary>
    private string buildType;
    /// <summary>
    /// The service program start date
    /// </summary>
    private DateTime? serviceProgramStart;
    /// <summary>
    /// The service program completion date
    /// </summary>
    private DateTime? serviceProgramCompletion;
    /// <summary>
    /// The client1
    /// </summary>
    private string client1;
    /// <summary>
    /// The client2
    /// </summary>
    private string client2;
    /// <summary>
    /// The client3
    /// </summary>
    private string client3;
    /// <summary>
    /// The client4
    /// </summary>
    private string client4;
    /// <summary>
    /// The consultant
    /// </summary>
    private string consultant;
    /// <summary>
    /// An item is being added.
    /// </summary>
    /// <param name="properties">The Item Event properties</param>
    public override void ItemAdded(SPItemEventProperties properties)
    //this.EventFiringEnabled = false;
    var web = properties.Web;
    var listItem = properties.ListItem;
    try
    LogIssue(web, null, "Item Added", "List Item Id {0}", listItem.ID);
    if (!this.AttemptCopyProcess(listItem))
    LogIssue(web, null, "List Id : " + listItem.ID, "AttemptCopyProcess failed.");
    catch (Exception ex)
    LogIssue(web, ex, "List Id : " + listItem.ID, "AttemptCopyProcess failed.");
    finally
    //this.EventFiringEnabled = true;
    LogIssue(web, null, "List Id : " + listItem.ID, "Event Receiver completed sucessfully.");
    /// <summary>
    /// Logs any issues found
    /// </summary>
    /// <param name="webContext">The web context.</param>
    /// <param name="exception">The exception, if null not exception details are written</param>
    /// <param name="contextId">The context identifier, a unique identifier that allows us to know where the call originated, i.e. a List and ListItem Id, or a Page Url</param>
    /// <param name="comment">The comment.</param>
    /// <param name="args">The arguments.</param>
    private static void LogIssue(SPWeb webContext, Exception exception, string contextId, string comment, params object[] args)
    //// if (webContext.AllProperties.ContainsKey("EnableLogging"))
    var list = webContext.Lists.TryGetList("ErrorIssues");
    if (list != null)
    var item = list.AddItem();
    item["Title"] = contextId;
    if (exception != null)
    item["Message"] = exception.Message;
    item["InnerException"] = exception.InnerException ?? (object)string.Empty;
    item["StackTrace"] = exception.StackTrace;
    if (!string.IsNullOrEmpty(comment))
    item["Comment"] = string.Format(comment, args);
    item.Update();
    /// <summary>
    /// Assigns the field.
    /// </summary>
    /// <param name="listItem">The list item.</param>
    /// <param name="fieldName">Name of the field.</param>
    /// <param name="contextId">The context identifier.</param>
    /// <returns>The fields string value if present, otherwise string.empty.</returns>
    private static string AssignField(SPListItem listItem, string fieldName, string contextId)
    var fieldValue = string.Empty;
    if (listItem.Fields.ContainsField(fieldName) && listItem[fieldName] != null)
    fieldValue = listItem[fieldName].ToString();
    else
    LogIssue(listItem.Web, null, contextId, string.Format("Field not available : {0}", fieldName));
    return fieldValue;
    /// <summary>
    /// Assigns the field as a DateTime
    /// </summary>
    /// <param name="listItem">The list item.</param>
    /// <param name="fieldName">Name of the field.</param>
    /// <param name="contextId">The context identifier.</param>
    /// <returns>Returns the date if found, otherwise returns DateTime.MinValue</returns>
    private static DateTime? AssignDateField(SPListItem listItem, string fieldName, string contextId)
    DateTime? fieldValue = null;
    if (listItem.Fields.ContainsField(fieldName) && listItem[fieldName] != null)
    fieldValue = Convert.ToDateTime(listItem[fieldName].ToString());
    else
    LogIssue(listItem.Web, null, contextId, string.Format("Field not available : {0}", fieldName));
    return fieldValue;
    /// <summary>
    /// Creates the folder.
    /// </summary>
    /// <param name="listdoc">The list.</param>
    /// <param name="folderName">Name of the folder.</param>
    private static void CreateFolder(SPList listdoc, string folderName)
    LogIssue(listdoc.ParentWeb, null, "List Id : " + listdoc.ID, "Creating folder {0} in {1}", folderName, listdoc.RootFolder.ServerRelativeUrl);
    // Updated by Indusnet
    SPListItem folder1 = listdoc.Items.Add(listdoc.RootFolder.ServerRelativeUrl, SPFileSystemObjectType.Folder);
    folder1["Name"] = folderName;
    folder1.Update();
    listdoc.Update();
    // End Updated
    /// <summary>
    /// Assigns the user field.
    /// </summary>
    /// <param name="listItem">The list item.</param>
    /// <param name="fieldName">Name of the field.</param>
    /// <param name="contextId">The context identifier.</param>
    /// <returns>Returns the user if found, otherwise null.</returns>
    private static SPUser AssignUserField(SPListItem listItem, string fieldName, string contextId)
    SPUser user = null;
    if (listItem.Fields.ContainsField(fieldName) && listItem[fieldName] != null)
    var userField = (SPFieldUser)listItem.Fields.GetField(fieldName);
    var fieldValue = (SPFieldUserValue)userField.GetFieldValue(listItem["electrical_proj_manager"].ToString());
    user = fieldValue.User;
    else
    LogIssue(listItem.Web, null, contextId, string.Format("Field not available : {0}", fieldName));
    return user;
    /// <summary>
    /// Attempts the copy process.
    /// </summary>
    /// <param name="listItem">The list item.</param>
    /// <returns>True if it successfully processed, false otherwise.</returns>
    private bool AttemptCopyProcess(SPListItem listItem)
    if (listItem.ParentList.Title != "Enquiry_Template")
    LogIssue(listItem.Web, null, "List Id : " + listItem.ID, "ListItem titles is not Enquiry_Template, aborting.");
    return false;
    var finalNum = "15-" + new Random().Next(0, 9999).ToString("D4");
    this.Initialize(listItem, finalNum);
    if (this.noBid != "Yes")
    LogIssue(listItem.Web, null, "List Id : " + listItem.ID, "The noBid field does not equal Yes, aborting.");
    return false;
    this.CopyFiles(listItem.Web, finalNum);
    this.CreateFolders(listItem.Web);
    return true;
    /// <summary>
    /// Copies the files.
    /// </summary>
    /// <param name="web">The web.</param>
    /// <param name="finalNum">The final number.</param>
    private void CopyFiles(SPWeb web, string finalNum)
    LogIssue(web, null, "Web Id : " + web.ID, "Setting the copying of files ...");
    var mechanicalQuoteList = web.Lists["Quotation Analysis Mechanical"];
    var electricalQuoteList = web.Lists["Quotation Analysis Electrical"];
    var tenderSummarList = web.Lists["TenderSummaryLib"];
    var estimatingList = web.Lists["EstimatingRFI"];
    var tenderSheduleList = web.Lists["Tender and Drawing Schedule"];
    var tenderPricingList = web.Lists["Est_Tender_Pricing_Document"];
    var url1 = mechanicalQuoteList.RootFolder.ServerRelativeUrl;
    var url = electricalQuoteList.RootFolder.ServerRelativeUrl;
    var url2 = tenderSummarList.RootFolder.ServerRelativeUrl;
    var urlA = estimatingList.RootFolder.ServerRelativeUrl;
    var urlB = tenderSheduleList.RootFolder.ServerRelativeUrl;
    var urlC = tenderPricingList.RootFolder.ServerRelativeUrl;
    var foldername1 = string.Empty;
    var foldername = string.Empty;
    var foldername2 = string.Empty;
    var foldernameA = string.Empty;
    var foldernameB = string.Empty;
    var foldernameC = string.Empty;
    var folder1 = web.Folders[url1 + "/" + foldername1];
    var folder = web.Folders[url + "/" + foldername];
    var folder2 = web.Folders[url2 + "/" + foldername2];
    var folderA = web.Folders[urlA + "/" + foldernameA];
    var folderB = web.Folders[urlB + "/" + foldernameB];
    var folderC = web.Folders[urlC + "/" + foldernameC];
    if (!folder1.Exists && !folder.Exists && !folder2.Exists && !folderA.Exists && !folderB.Exists && !folderC.Exists)
    var folders1 = web.GetFolder(url1).SubFolders;
    var folders = web.GetFolder(url).SubFolders;
    var folders2 = web.GetFolder(url2).SubFolders;
    var foldersA = web.GetFolder(urlA).SubFolders;
    var foldersB = web.GetFolder(urlB).SubFolders;
    var foldersC = web.GetFolder(urlC).SubFolders;
    folders1.Add(foldername1);
    folders.Add(foldername);
    folders2.Add(foldername2);
    foldersA.Add(foldernameA);
    foldersB.Add(foldernameB);
    foldersC.Add(foldernameC);
    var file1 = web.GetFile(web.Site.Url + TemplateUrl1);
    var file = web.GetFile(web.Site.Url + TemplateUrl);
    var file2 = web.GetFile(web.Site.Url + TemplateUrl2);
    var fileA = web.GetFile(web.Site.Url + RfiTemplateUrl);
    var fileB = web.GetFile(web.Site.Url + DrawingTemplateUrl);
    var fileC = web.GetFile(web.Site.Url + TenderReturnTemplateUrl);
    if (file1 != null && file != null && file2 != null && fileA != null && fileB != null && fileC != null)
    var fileName = string.Format("{0}/{1}{2}", folder1.ServerRelativeUrl, this.projectName, ".xlsm");
    LogIssue(web, null, "Web Id : " + web.ID, "Copying file 1 {0} to {1}...", file1.Name, fileName);
    var byteArray1 = file1.OpenBinary();
    var uploadedFile1 = folder1.Files.Add(fileName, byteArray1, true);
    LogIssue(web, null, "Web Id : " + web.ID, "File 1 Uploaded with new ID of {0}", uploadedFile1.Item.ID);
    this.EventFiringEnabled = false;
    var listitem1 = uploadedFile1.Item;
    listitem1["Name"] = this.projectName;
    listitem1["EnquiryNo"] = finalNum;
    listitem1["Project_Name"] = this.projectName;
    listitem1["Tender_Received"] = this.tenderReceived;
    listitem1["Tender_Return"] = this.tenderReturn;
    listitem1["Quotation_Analysis_Mech_Url"] = "https://my site url/Quotation%20Analysis%20Mechanical/Forms/DispForm.aspx?ID=" + listitem1.ID;
    listitem1.SystemUpdate(false);
    this.EventFiringEnabled = true;
    LogIssue(web, null, "Web Id : " + web.ID, "Copied file 1.");
    fileName = string.Format("{0}/{1}{2}", folder.ServerRelativeUrl, this.projectName, ".xlsm");
    LogIssue(web, null, "Web Id : " + web.ID, "Copying file 2 {0} to {1}...", file.Name, fileName);
    var byteArray = file.OpenBinary();
    var uploadedFile = folder.Files.Add(fileName, byteArray, true);
    LogIssue(web, null, "Web Id : " + web.ID, "File 2 Uploaded with new ID of {0}", uploadedFile.Item.ID);
    this.EventFiringEnabled = false;
    var listitem = uploadedFile.Item;
    listitem["Name"] = this.projectName;
    listitem["EnquiryNo"] = finalNum;
    listitem["Project_Name"] = this.projectName;
    listitem["Tender_Received"] = this.tenderReceived;
    listitem["Tender_Return"] = this.tenderReturn;
    listitem["Quotation_Analysis_Elec_Url"] = "https://my site url/Quotation%20Analysis%20Electrical/Forms/DispForm.aspx?ID=" + listitem.ID;
    listitem.SystemUpdate(false);
    this.EventFiringEnabled = true;
    LogIssue(web, null, "Web Id : " + web.ID, "Copied file 2.");
    fileName = string.Format("{0}/{1}{2}", folderA.ServerRelativeUrl, this.projectName, ".docx");
    LogIssue(web, null, "Web Id : " + web.ID, "Copying file 3 {0} to {1}...", fileA.Name, fileName);
    var byteArrayA = fileA.OpenBinary();
    var uploadedFileA = folderA.Files.Add(fileName, byteArrayA, true);
    LogIssue(web, null, "Web Id : " + web.ID, "File 3 Uploaded with new ID of {0}", uploadedFileA.Item.ID);
    this.EventFiringEnabled = false;
    var listitemA = uploadedFileA.Item;
    listitemA["Name"] = this.projectName;
    listitemA["EnquiryNo"] = finalNum;
    listitemA["Project_Name"] = this.projectName;
    listitemA["Date"] = this.docDate;
    listitemA["Description"] = this.description;
    listitemA["ProjectNo"] = this.projectNumber;
    listitemA["RFIUrl"] = "https://my site url/EstimatingRFI/Forms/DispForm.aspx?ID=" + listitemA.ID;
    listitemA.SystemUpdate(false);
    this.EventFiringEnabled = true;
    LogIssue(web, null, "Web Id : " + web.ID, "Copied file 3.");
    fileName = string.Format("{0}/{1}{2}", folderB.ServerRelativeUrl, this.projectName, ".docx");
    LogIssue(web, null, "Web Id : " + web.ID, "Copying file 4 {0} to {1}...", fileB.Name, fileName);
    var byteArrayB = fileB.OpenBinary();
    var uploadedFileB = folderB.Files.Add(fileName, byteArrayB, true);
    LogIssue(web, null, "Web Id : " + web.ID, "File 4 Uploaded with new ID of {0}", uploadedFileB.Item.ID);
    this.EventFiringEnabled = false;
    var listitemB = uploadedFileB.Item;
    listitemB["Name"] = this.projectName;
    listitemB["EnquiryNo"] = finalNum;
    listitemB["Project_Name"] = this.projectName;
    listitemB["Date"] = this.docDate;
    listitemB["Description"] = this.description;
    listitemB["ProjectNo"] = this.projectNumber;
    listitemB["DrawingURL"] = "https://my site url/Tender%20and%20Drawing%20Schedule/Forms/DispForm.aspx?ID=" + listitemB.ID;
    listitemB.SystemUpdate(false);
    this.EventFiringEnabled = true;
    LogIssue(web, null, "Web Id : " + web.ID, "Copied file 4.");
    fileName = string.Format("{0}/{1}{2}", folderC.ServerRelativeUrl, this.projectName, ".xlsm");
    LogIssue(web, null, "Web Id : " + web.ID, "Copying file 5 {0} to {1}...", fileC.Name, fileName);
    var byteArrayC = fileC.OpenBinary();
    var uploadedFileC = folderC.Files.Add(fileName, byteArrayC, true);
    LogIssue(web, null, "Web Id : " + web.ID, "File 5 Uploaded with new ID of {0}", uploadedFileC.Item.ID);
    this.EventFiringEnabled = false;
    var listitemC = uploadedFileC.Item;
    listitemC["Name"] = this.projectName;
    listitemC["EnquiryNo"] = finalNum;
    listitemC["Project_Name"] = this.projectName;
    listitemC["Date"] = this.docDate;
    listitemC["Description"] = this.description;
    listitemC["ProjectNo"] = this.projectNumber;
    listitemC["PricingURL"] = "https://my site url/Est_Tender_Pricing_Document/Forms/DispForm.aspx?ID=" + listitemC.ID;
    listitemC.SystemUpdate(false);
    this.EventFiringEnabled = true;
    LogIssue(web, null, "Web Id : " + web.ID, "Copied file 5.");
    fileName = string.Format("{0}/{1}{2}", folder2.ServerRelativeUrl, this.projectName, ".xlsm");
    LogIssue(web, null, "Web Id : " + web.ID, "Copying file 5 {0} to {1}...", file2.Name, fileName);
    var byteArray2 = file2.OpenBinary();
    var uploadedFile2 = folder2.Files.Add(fileName, byteArray2, true);
    LogIssue(web, null, "Web Id : " + web.ID, "File 6 Uploaded with new ID of {0}", uploadedFile2.Item.ID);
    this.EventFiringEnabled = false;
    var listitem2 = uploadedFile2.Item;
    listitem2["Name"] = this.projectName;
    listitem2["EnquiryNo"] = finalNum;
    listitem2["Project_Name"] = this.projectName;
    listitem2["Date"] = this.docDate;
    listitem2["Team"] = this.team;
    listitem2["Estimator_Electrical"] = this.electrical;
    listitem2["Estimator_Mechanical"] = this.mechanical;
    listitem2["Status"] = this.status;
    listitem2["Tender_Received"] = this.tenderReceived;
    listitem2["Tender_Return"] = this.tenderReturn;
    listitem2["Sector"] = this.sector;
    listitem2["Design_Build"] = this.designBuild;
    listitem2["Build_Type"] = this.buildType;
    listitem2["Service_Prog_Start"] = this.serviceProgramStart;
    listitem2["Service_Prog_Completion"] = this.serviceProgramCompletion;
    listitem2["Client_1"] = this.client1;
    listitem2["Client_2"] = this.client2;
    listitem2["Client_3"] = this.client3;
    listitem2["Client_4"] = this.client4;
    listitem2["Consultant"] = this.consultant;
    listitem2["Pre-construction_Prog_Start"] = this.preConstructionProgramStart;
    listitem2["Pre-construction_Prog_End"] = this.preConstructionProgramEnd;
    listitem2["Tender_Summary_Url"] = "https://my site url/TenderSummaryLib/Forms/DispForm.aspx?ID=" + listitem2.ID;
    listitem2.SystemUpdate(false);
    this.EventFiringEnabled = true;
    LogIssue(web, null, "Web Id : " + web.ID, "Copied file 6.");
    /// <summary>
    /// Creates the folders.
    /// </summary>
    /// <param name="web">The web.</param>
    private void CreateFolders(SPWeb web)
    var projectListId = web.Lists.Add(this.projectName.Replace(' ', '_'), string.Empty, SPListTemplateType.DocumentLibrary);
    var projectList = web.Lists[projectListId];
    projectList.OnQuickLaunch = true; // The document library will appear in Quick Launch bar.
    CreateFolder(projectList, "1.Tender Documents");
    CreateFolder(projectList, "2. Electrical");
    CreateFolder(projectList, "3. Mechanical");
    CreateFolder(projectList, "4. Correspondance");
    CreateFolder(projectList, "5. Settlement Meeting Docs");
    CreateFolder(projectList, "6. Tender Return Docs");
    CreateFolder(projectList, "7. Tender Handover");
    projectList.Update();
    /// <summary>
    /// Initializes the specified list item.
    /// </summary>
    /// <param name="listItem">The list item.</param>
    /// <param name="finalNum">The final number.</param>
    private void Initialize(SPListItem listItem, string finalNum)
    var contextId = string.Format("List:{0}, Id:{1}", listItem.ParentList.Title, listItem.ID);
    this.noBid = AssignField(listItem, "Bid", contextId);
    this.projectName = AssignField(listItem, "Project_Name", contextId);
    var teamlookup = AssignField(listItem, "Team", contextId);
    var lookupParts = teamlookup.Split(new[] { ";#" }, StringSplitOptions.None);
    this.team = lookupParts[1];
    this.description = AssignField(listItem, "Description", contextId);
    this.status = AssignField(listItem, "enquiry_status", contextId);
    this.electrical = AssignUserField(listItem, "electrical_proj_manager", contextId);
    this.mechanical = AssignUserField(listItem, "mechanical_proj_manager", contextId);
    this.docDate = AssignDateField(listItem, "Date", contextId);
    this.tenderReceived = AssignDateField(listItem, "Tender_Received", contextId);
    this.tenderReturn = AssignDateField(listItem, "Tender_Return", contextId);
    this.preConstructionProgramStart = AssignDateField(listItem, "Pre-construction_Prog_Start", contextId);
    this.preConstructionProgramEnd = AssignDateField(listItem, "Pre-construction_Prog_End", contextId);
    this.sector = AssignField(listItem, "Sector", contextId);
    this.designBuild = AssignField(listItem, "Design_Build", contextId);
    this.buildType = AssignField(listItem, "Build_Type", contextId);
    this.serviceProgramStart = AssignDateField(listItem, "Service_Prog_Start", contextId);
    this.serviceProgramCompletion = AssignDateField(listItem, "Service_Prog_Completion", contextId);
    this.client1 = AssignField(listItem, "Client_1", contextId);
    this.client2 = AssignField(listItem, "Client_2", contextId);
    this.client3 = AssignField(listItem, "Client_3", contextId);
    this.client4 = AssignField(listItem, "Client_4", contextId);
    this.consultant = AssignField(listItem, "Consultant", contextId);
    if (this.status == "Won")
    this.projectNumber = string.Format("15-{0}-{1}", this.team, new Random().Next(0, 9999).ToString("D4"));
    if (this.status == "Active" || this.status == "Closed")
    this.projectNumber = "No Project No";
    listItem["ProjectNo"] = this.projectNumber;
    listItem["EnquiryNo"] = finalNum;
    listItem.Web.AllowUnsafeUpdates = true;
    listItem.SystemUpdate(false);

    Hi,
    In this forum we mainly discuss questions and feedbacks about Office client products, as your question is about SharePoint 2013, I suggest you post this thread in SharePoint forum:
    https://social.technet.microsoft.com/Forums/office/en-US/home?category=sharepoint
    The reason why we recommend posting appropriately is you will get the most qualified pool of respondents, and other partners who read the forums regularly can either share their knowledge or learn from your interaction with us. Thank you for your understanding.
    Regards,
    Melon Chen
    TechNet Community Support
    It's recommended to download and install
    Configuration Analyzer Tool (OffCAT), which is developed by Microsoft Support teams. Once the tool is installed, you can run it at any time to scan for hundreds of known issues in Office
    programs. Please remember to mark the replies as answers if they help, and unmark the answers if they provide no help. If you have feedback for TechNet Support, contact
    [email protected]

  • Create App Sharepoint online 365 - .Get Context Token From Request Could not find a context token

    PT-BR
    Olá Pessoal , estou tentando criar um aplicativo hospedado em um servidor de domínio próprio (provider-hosted) . Ao rodar o aplicativo localmente pelo visual studio  eu consigo obter {StandardTokens} e todos os seus parâmetros: "AppContext",
    "AppContextToken", "AccessToken", "SPAppToken" .
    Ao publicar o Aplicativo no sharepoint online 365 e instalar o app em meu site e executar o app. Os parâmetros não passados via query string e nem por resquest form.
    Em minha query string vem apenas os parâmetros: SPHostUrl,
    SPHostTitle,SPLanguage,SPClientTag,
    SPProductNumber,SenderId
    Alguém poderia me ajudar com este problema?
    English
    Hello Guys, I'm trying to create an application hosted on your own domain server (provider-hosted). When running
    the application locally by visual studio I can get  StandardTokens} and all of its parameters, "AppContext", "AppContextToken", "AccessToken", "SPAppToken".
    By posting application in sharepoint online 365 and install the app on my site and run the app. Non parameters
    passed via the query string and not for resquest form.
    In my query string comes only parameters: SPHostUrl, SPHostTitle, SPLanguage, SPClientTag, SPProductNumber,
    SenderId
    Could anyone help me with this problem?
    .Cs
      string contextTokenString = TokenHelper.GetContextTokenFromRequest(Request);

    check the links, see if they can help
    https://social.msdn.microsoft.com/Forums/en-US/39488844-8568-48c2-8d09-a8eb12fb4591/providerhosted-app-could-not-find-a-context-token?forum=appsforsharepoint
    https://social.msdn.microsoft.com/Forums/en-US/23163e33-2f84-4356-813d-04f9103889c5/sharepoint-providerhosted-app-context-token-not-available?forum=appsforsharepoint
    Work hard, play harder!

  • SharePoint Online list view threshold issues: "because it exceeds the list view threshold enforced by the administrator"

    SharePoint Online list view threshold issues: "because it exceeds the list view threshold enforced by the administrator"
    Office 365 SharePoint Online can be problematic when it comes to exceeding the list item threshold (e.g. 5,000).
    Examples of what happens after exceeding the threshold (e.g. 5,000 items):
    You can’t create new forms for the list in SharePoint Designer.
    You may have challenges with metadata fields in the forms (e.g. adding metadata values, editing metadata values, deleting the metadata column from the list).
    Cannot save the list as a template (i.e. you get the threshold error).
    Issue I'd like assistance with: how can I create a custom NewForm in SharePoint Designer
    when the list exceeds the threshold limit, given this is Office 365 SharePoint Online and I don't have access to increase that limit?
    As a control for my testing, I created another list with just a few custom columns with no list items --it worked fine for that list.
    I also tried clearing local AppData cache which didn't solve it. I'd need Central Admin on O365 SharePoint Online to increase the threshold which I don't have access
    to do. Errors received in SharePoint Designer:
    "Could not save the list changes to the server." After getting this, I tried to work around
    the create new forms issue by saving a copy of the original NewForm as NewForm2 and got the root error that I suspected was underlying it all:
    “Server error: the attempted operation is prohibited because it exceeds the list view threshold enforced by the administrator”.
    Any ideas for how to create a new list form in SD?

    Thanks Alex.
    I just found a couple new workarounds instead of using SharePoint Designer:
    Method 1: Add web parts to the form pages on the client side:
    Go to the list and execute one of these actions depending what form you want to edit: create a new item (NewForm), edit an item (EditForm), or display an item (DispForm).
    With the form you want to edit displayed, go to the gear icon and click "Edit Page".
    You should now see the web part page show up with "Add a Web Part" as an option.
    Add a Content Editor or Script Editor web part.
    Add your custom code to either one to manipulate the HTML objects using your favorite web languages.
    Method 2: Use InfoPath 2013.
       The InfoPath 2013 route appears to work.

  • Sharepoint online & Sharepoint Designer 2013

    Hi, I am receiving an error each time I try to open a SharePoint online site through SharePoint designer 2013.
    The error is saying "The Server Could not complete your request". I click on 'Details' and get a repeated "403 Forbidden403 Forbidden403 Forbidden" error message. After I pass this message I get a standard "You do not have permission
    to open this web site in SharePoint designer"
    Here are a list of things that have so far not worked for me:
    Using "https://" rather than "http://" - Same issue.
    Removing SharePoint Designer, deleting cache in "users>Roaming>SharePoint designer cache"  - Same issue.
    Clearing Generic Credentials in Credential Manager - Same issue.
    Checking SharePoint site permissions to ensure that " Same issue.
    My Admin role grants no restrictions.
    I have Nintex trials installed and have used it to build forms on the site, I also have Nintex workflow however current tutorials detailing how to do what I need to do require SharePoint Designer 2013.
    Finally SharePoint Developer 2013 has opened sites before, both SharePoint online sites and on prem, but now our company has gone in for the 'real deal' site I can not open this in SharePoint Designer 2013.
    Any support would be very much appreciated, I have been trying to find a solution for a number of days now going into a week.
    Regards,
    Andrew  

    Hi Andrew,
    What permission do you have at site collection level and site level?
    For troubleshooting your issue, please go to your site collection -> site settings -> site collection administration -> SharePoint Designer Settings, make sure you enable the SharePoint Designer.
    Also make sure the o365 sites are added to the trusted sites and the WebClient services (Search: services.msc) is running.Then in SPD go to Account > Switch Account and type in the credentials of the site you are trying to open (it defaults to your
    Microsoft Login).
    Reference:
    http://community.office365.com/en-us/f/154/t/184387.aspx
    https://social.technet.microsoft.com/Forums/en-US/15fd1436-3166-4e43-8b22-cdb480091548/cant-open-sharepoint-online-site-in-sharepoint-designer-2013?forum=sharepointcustomization
    Best Regards,
    Eric
    Eric Tao
    TechNet Community Support

Maybe you are looking for