Lazy approval process in SharePoint online

Hi All,
Can we configure lazy approval process for workflows in SharePoint online?
As per technet articles, it says we need to save incoming emails to a incoming email enabled document library which is not possible in SharePoint online.
Please guide me through any links if this is possible in sharepoint online.
Thanks in advance.
Hepsi

Hi,
Catalog is supported in E3 and E4 subscriptions of SharePoint Online.  Please refer to the following technet article.
https://technet.microsoft.com/en-us/library/jj819267.aspx
Please don't forget to mark it answered, if your problem resolved or helpful.

Similar Messages

  • Can we add users to the 'Manage Access Request' field to process site access request in SharePoint Online?

    Hi,
    I have a requirement in which I have to assign couple of email ids to the "Manage Access Request" field to process site access requests. And, this is possible using server object model but I have to achieve this on SharePoint Online with the help
    of CSOM.
    There are two properties which control the access request configuration, first is "RequestAccessEnabled", a Boolean flag which turns on or off the access request feature for the site. The second property defines one or more email addresses where
    requests will be sent to. It is named "RequestAccessEmail".
    The above both properties are available for server object model but not for CSOM.
    So, is there any other workaround or way to achieve the sane in CSOM?
    Thanks,

    I don't think there is a programmatic workaround for SharePoint Online.  But the email address is just used for Notification.  Anyone with Manage Permissions can approve Access Requests.  If you create an email distribution list for the multiple
    addresses that should be notified you should be able to add the email address for the distribution list into the Access request email field using the user interface.
    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.

  • Remove the last task of the stand approval process workflow in SharePoint Designer

    Hello,
    I am building a workflow in SharePoint Designer.  I have added the standard approval process that comes stock in SharePoint. I also have the approval set up to handle change requests.  This is where my issue is.  A user can eather approve
    a document or request changes(according to some limitations i have in place on the InfoPath form).  If they approve, the workflow is complete.  If they request a change, a request change task gets assigned to another user.  This other user then
    completes their review and submits their response.  this then kicks off the approval process again to the original user to approve. 
    1. User A recieves approval form - requests a change
    2. User B recieves Form - submits that changes have been made
    3. User A recieves another approval form - then can approve
    I am looking for a way to eliminate step number 3.  I want User B to be able to complete the approval when he submits the changes.  I tried copying and pasting the approve button from the default infopath view onto the view that UserB
    sees, which has a data submit action when the button is clicked. This did not work.
    Any ideas would help

    Hi,
    According to your post, my understanding is that you wanted to add a “request a change” button in the Task Form.
    If you can cutomize the task form, I recommend to add button directly and then add conditions and rules to the button.
    After you add the “request a change” button, the workflow is similar to the
    Multiple Approval Workflow.
    Here is a great blog for your reference:
    Implementing Workflow using InfoPath 2010 and SharePoint designer 2010
    Best Regards,
    Linda Li
    Linda Li
    TechNet Community Support

  • Renaming SharePoint 2010 Designer Approval Process Action Variable Name

    Hi,
    I am creating a 7 level(Mutiple) Approval Workflow in SharePoint 2010 Designer.
    Whenever i add a new Approval Task Process action it adds 14 to 15 varialbes like Duration Unit,Duration Description,IsApproved,IsDeleted,EnableContentTypeApproval etc.
    Since i am adding 7 Approval Task Process actions i am getting the variables added as Duration Unit1,Duration Description1,IsApproved1,IsDeleted1 etc in the Workflow.
    I want to rename them to track it  in a better way so that i can change them like Duration Units-Level1,Duration Description-Level1,IsApproved-Level1,IsDeleted-Level1 etc.
    I am able to rename all the varaibles except Duration Unit and Duration Description. I see the Local varaible type as Duration Unit for Duration Unit varialbe and i am not able to modify it since i don't see a Type Called Duration Unit in Workflow variables
    type properties.
    For Duration Description i can rename it but while publishing i am getting the error as mentioned in the below blog.
    http://spnovice.blogspot.com/2012/12/spd-workflow-error-path-needs-to-point.html
    It's hard to track this varible with names like Duration Description,Duration Description 1,Duration Description2,Duration Description3,Duration Description4,Duration Description5,Duration Description6 etc.
    How to rename these two variables in Approval 2010 Designer workflow.
    I see varailbes like CC and Approvers which i dont need.Can we remove the unused vaiables also so that i can have limited no of vaaibles in my workflow.
    Please help.
    Thanks, Vijay Arockiasamy

    Scott,
    I have created 7 different approval workflows on a single list.Just followed the recommendation from
    Keith Hudson, J.D in this blog.
    https://www.linkedin.com/groups/sharePoint-designer-2010-multilevel-approval-136589.S.5824115633184350208
    But as per this blog the workflows triggers only when a new item is created not when a an item is changed.
    I have few questions on these 7 workflows on a single list.
    1.If the Approver rejects the request the request needs to reubmit it with some changes.In this case if the requestor edits the existing list item the workflow will not trigger.
    2.I am using Wait on Field action.For Example if Level 1=Approved and Level 3 is pending then level 2 approval workflow will trigger.
    In level 2 workflow i am using  update list item  action and updating the Level status=approved.Int this case level 1 workflow will also trigger if i am executing the workflow on both item created and item changed event.
    Could you please help on this.
    Thanks, Vijay Arockiasamy

  • SharePoint Online Document Library different upload process ?

    I'm pretty new to office 365.... Why is the document library different in terms of uploading ? What I mean is.. When I upload a document it doesn't give me the option to edit the properties first before it uploads the document.. ON the on-prem version
    when you upload you have the chance to define the item properties. Kindly please help ?
    AJ MCTS: SP 2010 Configuration MCSA: Windows 7 If you find this post useful kindly please mark it as an answer :) TY

    I am not 100% sure if this will answer you question as I also noticed on SharePoint Online that when none of your metadata are required metadata it upload the document to library rather than giving you an option to define values for those metadata as opposed
    ton on-prem will give you an option to define values regardless of metadata is required or not.
    One workaround you can use is to go to document library advanced settings and select YES to allow management of content type. Do not add or modify anything but turning that option to Yes will force document library to show you the metadata page after you
    upload the document.
    Amit

  • Backup - Restore process of a Site Collection in SharePoint Online

    Hi, I have a couple of questions. 
    1) What do I have to do to get a backup-restore of a site collection in SharePoint Online? 
    2) Can I myself perform a backup-restore or just backup a site collection without using any 3rd party tool?
    Any inputs on these will be helpful. Thanks in advance!

    Hi,
    what you can instead of backup and restore site is to save it as template, check this thread
    http://community.office365.com/en-us/f/154/t/203139.aspx
    Kind Regards,
    John Naguib
    Technical Consultant/Architect
    MCITP, MCPD, MCTS, MCT, TOGAF 9 Foundation
    Please remember to mark your question as answered if this solves your problem

  • Sharepoint 2013 Simple List Item Approval process

    I am trying to work out how, in SP 2013 Designer to get a very simple approval process to work and I am not having any luck.
    I have a form that adds a list item for requesting the use of our corporate credit card.
    Steps:
    1) Fill out form with required info (one field is your manager)
    2) Email gets sent to manager (noted on the form) to approve or reject the request
    3) If Managers approves request > User gets email that it was approved with directions. If manager rejects request > user gets email that the request was rejected with different directions.
    4) End workflow.
    This seems so simple, but I am having such a hard time with the new interface. Please help.

    Hi Chris,
    To achieve what you need, we can follow this steps:
    Create a form  in InfoPath with the required field including the manager field which should be a person picker type, then publish it  and add these fields to the library.
    New a workflow associated with the library.
    Select Start Approval process action, and set it to start approval process on current item with Current Item: Account Id(one field of the person picker group in step1).
    Select If any value equals value condition, and set it to if Current Item: Approval Status equals 0;#Approval.
    Select Send an email action, and set it to Email Current Item: Created By.
    Select If any value equals value condition, and set it to if Current Item: Approval Status equals 1;#Rejected.
    Select Send an email action, and set it to Email Current Item: Created By.
    Make the workflow started automatically when an item is created, and publish it.
    If you have any problem, please feel free to reply.
    Thanks

  • JavaScript error under Sp.ribbon.js on SharePoint Online

    Hi everyone,
    I'm trying to add a custom button on my ribbon for easier approval process, I use JavaScript to do this in a Script Editor web part on a task list view. The script works fine but when he tries to access the ribbon to actually add the button the ribbon crashes
    so I don't even have the usual ribbon.
    I used the IE JavaScript editor and I have an error on the sp.ribbon.js the "funny" part is that I only use that library I made no modification (also because I'm using SharePoint Online so I don't have access to it).
    there is the error that I get with IE:
    and there is the code I use to add the ribbon:
    $this.ExecuteOrDelayUntilScriptLoaded(init_addButton, "sp.ribbon.js");
    function init_addButton(){
    setTimeout(function(){
    var defaultWP = document.getElementById("MSOZoneCell_WebPartWPQ1");
    WpClick({target:defaultWP,srcElement:defaultWP});
    },100);
    setInterval(function(){
    if($("#RibbonContainer_activeTabId").val()==="Ribbon.ITEMS" || $("#RibbonContainer_activeTabId").val()==="Ribbon.ListItem"){
    addRibbomButton();
    },1000);
    alert("test");
    function addRibbomButton(){
    if($("#ribbonApproveAll").length===0){
    var b = [];
    b.push("<li id='ribbonApproveAll' class=ms-cui-group unselectable='on'>");
    b.push("<SPAN class='ms-cui-groupContainer' unselectable='on'>");
    b.push("<SPAN class='ms-cui-groupBody' unselectable='on'>");
    b.push("<SPAN class='ms-cui-layout' unselectable='on'>");
    b.push("<SPAN class=ms-cui-section unselectable='on'>");
    b.push("<SPAN class=ms-cui-row-onerow unselectable='on'>");
    b.push("<A id='approveAllButton' class='ms-cui-ctl-large ms-cui-disabled' role=button onclick='approveSelected();return false;' href='javascript:;' unselectable='on' mscui:controltype='Button'>");
    b.push("<SPAN class='ms-cui-ctl-largeIconContainer' unselectable='on'>");
    b.push("<SPAN class=' ms-cui-img-32by32 ms-cui-img-cont-float' unselectable='on'>");
    b.push("<IMG style='TOP: -129px; LEFT: -255px' alt='' src='/_layouts/1033/images/formatmap32x32.png' unselectable='on'>");
    b.push("</SPAN>");
    b.push("</SPAN>");
    b.push("<SPAN class=ms-cui-ctl-largelabel unselectable='on'>"+tabBtn.btnLabel+"</SPAN>");
    b.push("</A>");
    b.push("</SPAN>");
    b.push("</SPAN>");
    b.push("</SPAN>");
    b.push("</SPAN>");
    b.push("<SPAN class='ms-cui-groupTitle' title='"+tabBtn.groupLabel+"' unselectable='on'>"+tabBtn.groupLabel+"</SPAN>");
    b.push("</SPAN>");
    b.push("<SPAN class='ms-cui-groupSeparator' unselectable='on'></SPAN>");
    b.push("</li>");
    setTimeout(function(){
    if($("#Ribbon\\.ITEMS").length===1){
    $("#Ribbon\\.ITEMS").append(b.join(''));
    }else if($("#Ribbon\\.ListItem").length===1){
    $("#Ribbon\\.ListItem").append(b.join(''));
    },100);
    alert("test");
    alert("test 1");
    setTimeout(function(){
    var cc = new SP.ClientContext.get_current();
    var web = cc.get_web();
    var currLib = web.get_lists().getById(SP.ListOperation.Selection.getSelectedList());
    var selectedItems = SP.ListOperation.Selection.getSelectedItems();
    if(selectedItems.length>0){
    $("#approveAllButton").removeClass("ms-cui-disabled");
    }else{
    $("#approveAllButton").addClass("ms-cui-disabled");
    },200);
    I didn't write that code but the website where I found it had some review that says that it was working and I'm more a C# dev than a JavaScript so I'm not use to debug it. Is that a version problem an implementation problem and how to solve it ? 
    Thanks for your time :)

    Hi,
    I think this is not the right way of customising ribbon. SharePoint has a very powerful ribbon management XML framework. So instead of javascript hacking, I would recommend you to use the XML based ribbon customisation. Reference:
    http://msdn.microsoft.com/en-us/library/office/jj163954(v=office.15).aspx.
    Thanks,
    Sohel Rana
    http://ranaictiu-technicalblog.blogspot.com

  • App store approval process

    Hi,
    I'm SharePoint admin of a SharePoint online tenancy, and feeling really thick, but I'm struggling with the process of users requesting an app.
    Scenario:
    User from his site goes Site Contents -> Add an app -> SharePoint store and finds a free app.  He chooses "Request it".
    I go to the appCatalog on our tenancy, edit the request item in the list, marking it as "approved".
    Then what?  The user still seems unable to add the app to his site, he can see that I've approved it, but can't get any further.
    I realise this is probably really simple, but I can't understand it.
    I have found that as admin, I can go and get the app, but a) that doesn't seem right to me, if it were to cost money, I don't want to pay for it, and b) it becomes available to install on every single site in our tenancy, I thought I was just approving it
    for one site.
    Thanks a lot.  Ps is this my first post so if I've done something wrong, I apologise in advance!
    Richard.

    Approving an app purchase will approve it for the entire tenancy, not just a specific site.  That's the way its designed to work.  Also, does your user have the required permissions to add an app to a site.  it requires the
    Manage Web site and Create Subsites permissions to add an app for SharePoint.  Regular users won't have those permissions.
    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.

  • Error while executing script for sharepoint online (office 365) - the remote server returned an error: (503) server unavailable

    error while executing script for sharepoint online (office 365) - the remote server returned an error: (503) server unavailable.
    I am creating many site collections reading records from sharepoint list using powershell in sharepoint online tenant (office 365).
    Few site collections are created and then getting above error so this error record will be skipped then few succeeding record processed then again getting error.
    pattern is like:
    success
    success
    success
    success
    Error
    success
    success
    success
    success
    success
    success
    error
    success

    Hi,
    As it is an online environment, to troubleshoot this issue in an easier way, I suggest you contact Office 365 Support to see if there is any useful information in
    the log files in the server side:
    https://support.office.com/en-us/article/Contact-Office-365-for-business-support-32a17ca7-6fa0-4870-8a8d-e25ba4ccfd4b?ui=en-US&rs=en-US&ad=US
    Best regards
    Patrick Liang
    TechNet Community Support

  • SharePoint Approval Workflow using SharePoint Designer in SharePoint Foundation 2013

    I am unable to do SharePoint Designer workflow for approval process and I didnt get any Approval process in Actions in SharePoint designer Workflow also I don't find workflow features in Site collection features SharePoint 2013.
    Even I am not able to do simple Out of the box Approval Workflow.
    Kindly help me with this

    Unfortunately, Out of the box workflows are not available in SharePoint foundation 2013, you need at least the standard version of SharePoint 2013.
    You can still create .Net Workflows using the 2010 plateform.
    Take a look at this great comparative between the three versions of SharePoint 2013 :
    http://blog.blksthl.com/2013/01/14/sharepoint-2013-feature-comparison-chart-all-editions/

  • 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]

  • Approval workflow in SharePoint foundation 2010

    Hello Experts,
    I'm using SharePoint foundation 2010. Can someone help me understand the procedure for creating the approval workflow for a doc library using the SharePoint designer 2010. It would be great if you can guide me the step by step procedure for setting up this
    workflow.
    Thanks. 

    Hi rebel537,
    As you described, you are using SharePoint Foundation 2010. There is no “Start approval process” action when you edit SharePoint Foundation 2010 workflow in SharePoint
    designer 2010.
    I suggest you using “collect data from a user” action instead of “start approval process” action to complete the approval task. There is a demo for your reference.
    1.  
    Open the SPD, navigate to the workflow edit zone. Select “collect data from a user “action.
    2.  
    Click data, in the pop-up window, click next and enter the task name for the approval workflow.
    3.  
    Click next, define the fields for the task, for this demo, there has a field “approval result”.
    4.  
    Then click finish.  Back to the workflow edit zone, click user, in the pop-up window, select the user for the task then click finish ,back to the workflow edit zone.
    5.  
    Add a condition (if any value equals value) after the action.
    6.  
    Click the first value, and then click Fx, there goes to a pop-up window, enter as below.
    Data source:  Association: Task List
    Field from source: Approval Result
    Field: ID
    Value:  Variable: collect
    7.  
     Set another value to “Yes”, add the action” set workflow statue”, set it to approval.   Add an If-Else branch, set the workflow statue to reject.
    8.  
    Publish the workflow, and use it for the approval purpose.
    Thanks,
    Simon

  • 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.

  • How to use a pwa group in CREATE A TASK PROCESS in SPD 2013 for project server workflow approval process

    I am working on a Project Server 2013 workflow. I am creating this using Sharepoint Designer 2013. In this workflow I am using approval process at one stage. I have created a security group SalesManagers in PWA. I want to use this group for workflow approval
    process. I want all users of this group get approval tasks. 
    For this I used START A TASK PROCESS activity in the SP Designer. I clicked on
    this user and created task process. But here I could not find SalesManager group which I created in PWA. I was only able to find the users. I can also see
    Administrators for PWA . But couldnot find SalesManager or any other security group created in pwa.
    Can anyone suggest how I can get the security group created in pwa.

    NBDevelopment,
    I believe SPD only recognizes the SharePoint Groups and not the project server security groups.
    The Administrators for PWA, and few other groups like Project Managers for PWA etc., are synced SharePoint Groups with the security groups, which is why they show up in SPD.
    You could create a SharePoint Group for the Sales Managers group and use that in SPD.
    Cheers,
    Prasanna Adavi, Project MVP
    Blog:
      Podcast:
       Twitter:   
    LinkedIn:
      

Maybe you are looking for

  • Photoshop images are TOO big to import

    I need to import color images into InDesign from Photoshop. Anything over 4MB is TOO big and it says ClipBoard failed. How do I import an image of 14MB or so into InDesign. Thanks, Alley Cat

  • How to I get my play counts off my iPod onto my new mac?

    I have all the music in my iTunes but before I re-sync I'd like to get my play count file off my ipod and import it into iTunes? Anyone help me please?

  • While transferring a rented movie over to my Iphone, I get this error message

    "This rental could not be transferred to the Iphone because it has already been transferred to another computer or device". I have tried to unauthorize and reauthorize the computer, but no luck. I don't have another device to transfer movies to.  Any

  • Requirement class

    Hi PP Experts, Can anybody tell me what is exact role of Requirement class & Requirement type in planning strategy.I have read SAP library.But even not that much clear.please help.

  • How do I install Flash capability on OS X 3.9.1

    I have an old iMac with OS X 3.9.1. Flash animations no longer work on this computer. They used to, but it seems that Flash has stopped supporting their older software. Here's the Catch 22: I get a message from Macromedia Adobe to download a Flash 10