Client1 to RMIServer to Client2

I have actually have 2 applications.
(GUI)application1 is the sent request to the Rmi server.
the server will update the database and then update the application2.(GUI)
Can I have the brief concept on this kind of implementation?
thanx a lot

Hi
The main (RMI) trouble to get past here is that RMI can not be used to push things from server to client, it's function calls right.
What you need to do is define a Remote interface (say 'callMe')that 'Client2' implements and exports. The server can then expose an interface (say 'whoToCall') for registering clients that want to be called by this interface. So when 'Client2' starts it creates an instance of 'callMe' and connects to the servers 'whoToCall' interface to register the local 'callMe' interface. Then the server can use the 'callMe' interface to push information to client2.
Hope this helps
//Samuel

Similar Messages

  • SharePoint 2013 event receiver error

    I am currently working on a SharePoint online project. I am facing a strange issue. 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.
    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://groupportal.sharepoint.com/sites/EnginSouth/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://groupportal.sharepoint.com/sites/EnginSouth/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://groupportal.sharepoint.com/sites/EnginSouth/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://groupportal.sharepoint.com/sites/EnginSouth/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://groupportal.sharepoint.com/sites/EnginSouth/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://groupportal.sharepoint.com/sites/EnginSouth/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]

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

  • How do I verify an RDS session is getting a virtual IP?

     
    I followed the MS walkthru here
    (http://technet.microsoft.com/en-us/library/ee308290(WS.10).aspx)
    to set up a lab to test RDS virtual IP's.
    I have a DC, Web Access Server (don't think I need this), Connection Broker, DHCP Server, 2 RDS Servers, 5 WinXP Clients, 5 Win7 Clients.
    DC=10.0.0.1, RDS1=10.0.0.2, RDS2=10.0.0.3, Connection Broker=10.0.0.5, Web Access=10.0.0.6, DHCP=10.0.0.10 (DHCP pool=10.0.0.100-10.0.0.200), Clients=10.0.0.20-29
    I have IP Virtualization turned on through group policy per session.
    I have my 2 RDS servers joined to a farm called labfarm through group policy.
    I have DNS Round Robin set up via DNS on the DC.
    When I connect my clients to the RDS Servers, I run ipconfig on the clients, and they all only show the static IP of the RDS Server.  I was under the impression that with IP virtualization
    turned on, each client would show 2 IP's.....1 for the host, and one would be the virtual IP.
    Also, when I look in the DHCP server, I do not see any leases.
    I am correct in the above statement?  If not, how do I verify that my clients are all getting virtual IP's?

    I couldn't wait....I just removed vmware tools and reinstalled without the driver mentioned in that article and it works great now. Thanks alot.
    I have another question though.  When I connect Client1 to RDS1 and run ipconfig, I see the static IP of the RDS server, and 1 extra IP....which I expected.  Leaving Client1 connected, I connect Client2 to the same RDS1 server and run ipconfig. 
    I then see the static IP and 2 ip addresses.  leaving both Client 1 & 2 connected, I connect Client3 to the same RDS1 server and run ipconfig.  I still only see the same 2 ip address.  I connected up to 5 clients to the same RDS server,
    and all I see are the same 2 virtual ip's on every session.
    I thought each session was to be assigned it's own IP address.  Why are there only 2 being handed out? and why am I seeing multiple IP addresses per session?  I was expecting to see on each session, the RDS server IP, and 1 other unique IP address....not
    multiple addresses, and surely not only 2 address.
    The pool I have set up in dhcp is from .100 to .200, so there are plenty of addresses to go around. Is there a setting somewhere to limit the number of virtual IP's? Is there a way to make it unlimited? If I use this in production, I'll need up to 50 sessions
    per host to have their own IP....is this possible?

  • Use same URL for multiple SharePoint sites

    Hi there,
    Our requirement is to create multiple web applications in one Farm (which contains 1 Web Front End, 1 Application Server & 1 DB Server) using 80 port of Web Front End which is having single public IP.
    There are number of ways of doing this - One way is to create new domain name for each web application (like www.abc.com; www.xyz.com); another way is to create multiple sub domains in a single domain name like www.sub1.abc.com; www.sub2.abc.com, etc.
    However our requirement for URL naming convention for these web applications is "www.[Domain Name]/[Client Name]"  (like www.abc.com/client1, www.abc.com/client2, etc) 
    In SharePoint we can achieve this if we create one Parent site and others as Child site. However we don't want to us this. 
    So, is their any way where we can form URL of these web applications as "www.[Domain Name]/[Client Name]" 
    Regards,
    Adi

    Is there a reason for this?  I would think subdomains would be ideal, but just curious on the reasoning.  Also, do they need a full web application, or simply different site collections?  If you just need site collections, and assuming you
    don't have a massive number of them, you could use Managed Paths to explicitly allow a site collection immediately under the root url.  Be careful, though, Managed Paths can cause a lot of overhead after you go over 10-15 if you're hardware isn't up for
    it (I would assume you wouldn't put 10-15 web apps on the farm anyway, cause that's also not so great).
    There really isn't a way to do what you are asking for a full Web Application, only at the site collection level(which should be good from my limited understanding of your scenario)
    I am very curious why subdomains wouldn't work, though, as they can all point to the same IP and takes no additional purchasing of domains or anything.
    Christopher Webb MCM: SharePoint 2010 MCSM: SharePoint Charter MCT http://blog.christophermichaelwebb.com

  • Chatting messenger

    I am final year student. I am making project on instant messenger,I am using Socket programming .I want from my application that when client1 want to chat with any of the online client2,he send that name of the client2 to the server then server send his socket address to the client1,& then client1 connect to the client2 through the socket send by the server.Thus in chatting session betwwen two client's there is no role for server.
    But i am facing a many problem in doing these,
    1)which java.net class i used to establish connection between to client1
    & client2([b]InetSocketAddress;,SocketAddress,SocketImpl,SocketImplFactory)
    2)If suppose client1 want to chat client3,then how client1 discriminate that message is coming from client2 or 3 because both send the message to same input stream.
    These are the problem i'm facing in my project,plz help me in solving my difficulties,and plz give me some suggestion if i'm going in wrong direction.Also suggest me some java classes which will help me in completing my project.
    thank you for suggestions

    1)which java.net class i used to establish connection
    between to client1
    client2([b]InetSocketAddress;,SocketAddress,Soc
    ketImpl,SocketImplFactory)java.net.Socket.
    2)If suppose client1 want to chat client3,then how
    client1 discriminate that message is coming from
    client2 or 3 because both send the message to same
    input stream.No they don't. Each client is represented by a different Socket and each Socket has its own pair of streams. Where did you get this from?

  • Regarding Azure Usage Cost optimization required

    Hi
        This post is regarding how to reduce my Azure usage costs.We are using Microsoft Azure Cloud Services (Paas).We are  using Cloud services (Web/Worker Roles).
    So for every client specific.We are deploying in 2 instances of Web Role for webapplication and 2 Instances of Service Role for WebServices and 2 instances of Worker Role for running some jobs to meet Azure SLA for 99.95% availablilty.
    For every Client specific i am deploying the same way as above apart from test setup.So the azure costs are increasing.
    We are using this Microsoft Azure for more than 2 years.
    Due to the costs increasing recently due to added instances.we are planning on looking for options to reduce the costs.
    Please provide me some options to reduce the costs.
    Q1: Is Cloud Services (Paas) is a good option for smaller firms? or are there any alternatives?
    Q2: What options i have to optimize costs using currently using Cloud Services (PaaS) ?
    Q3: Currently my Webapp is providing like this client1.cloudapp.net, client2.cloudapp.net..etc?Is there any way i can combine all Clients into one Webapp and deploy it in 2 instances and provide some thing like mainsite.cloudapp.net/client1, mainsite.cloudapp.net/client2...
    etc..?
    Q4: Will there be any way i can try to combine all client specific Webservices into one. and connect to client specific SQL Azure databases?
    Q5:Similarly for running scheduled jobs using worker role for client specific? can i combine all into one and connect to client specific SQL Azure database to run the jobs?
    Q6: As of now i am using Azure cloud services (Web/Worker Roles) will there be any good to go for other alternatives Azure Websites / Azure VM? If yes will it help for cost optimizations even client increases?
    I had gone through some web sites / forms but did not find any good optimized solution.
    Any options for cost reduction will be highly appreciated?

    Hi PVL_Narayana,
    This is a very complex question, but in the end it all concludes with application design (architecture). Of course you can design your web and worker roles to serve all your customers in a multi-tenant approach and you can also do the same for your databases.
    However, from my expertise, there are certain scenarios where a one-bucket-satisfies-everyone approach doesn't work for those customers who want to pay extra. It's totally understandable for you to look to cutting costs considering your user pool has become
    larger. Thanks to Microsoft though, which continously drops prices to Azure, this situation usually arrives later than originally expected.
    There are some patterns I've blogged about and I spoke about at various conferences which you could benefit from in your multi-tenant application, such as the priority-queue pattern, the valet key, the event-based triggering pattern, the CQRS pattern and
    especially the sharding pattern. I'm happy to chat with you more on this subject.
    As for moving away from cloud services to Azure Websitesor VMs: I would personally not suggest that, considering that: 1. you're happy with the no-manage-required approach. Otherwise, you'll end up in updating and patching your VM's OS regularry and rebooting
    every once in a while. Using PaaS, Microsoft does that for you. 2. You don't really want to mix your worker role resources with your web resources. If your pool of users has enlarged, this probably means that your services have to satisfy more requests / sec
    as well. Therefore, allocating your web server's resources for running WebJobs rather than have specific servers which just run the worker roles could mess up your code's HW requirements and you could end up with huge performance impacts.
    Of course, these answers are quite generic given the lack of insights into your application.
    I'm happy to chat with you more on this subject, should you require any more intel.
    Alex

  • Print out to the console

    I'm writing a program to update something to the console. Let's say I have some fields like this:
    client1 Name1 ID1 value1
    client2 Name2 ID2 value2
    the number of client could be changed, but not much. I would like to update the value field on the console, say, every 5 seconds.
    How I could do that? It's much like some Linux/Unix program as top. System.out.println surely doesn't do the job.
    Thanks in advance for your help.

    Well, I'm new to gui application on linux. Couldyou
    tell me in a few words how to do it? Which libraryI
    should use? Thanks,Look into swing, it's a part of the standard library.Swing couldn't run on Linux/Unix without X server requirement. What I need is a terminal based application.

  • [urgent]communication between two client.

    currently i am developing an online game, i only own one computer at home,so i got a problem of how to make two client connected together?in case, there is a lot of clients here,now i wish that client1 do something, client2 will see it, how this can be done, how my server program tackle client1 and client2's IP address, so that client2 only communicate to client1 but not the other client? can please have any guidance on it. i really headache about this problem. please help. can i have some any simple example code to help me had better understanding on this problem? thanks a lot

    well,you best don't let the client comunication each other
    because the client open up some port and listening will got some problem
    the custom solution is through the server , all client must be through the server to communicate
    client1 <---> server <---> client2
    if client1 connected to server ,and the server will take some
    information ( client1's ip , username etc.) to the database.
    client1 and server will keep connection
    when the client1 is connected to server ,it will got the information about client1 , of course server also
    take the information as client1's to the database,at this time,the client1 will get the client2's information
    then,finished the client's information exchanged

  • Java Net Programming

    Hello there,
    I am recently writting an Client/Server program for my final year project. At the begining i just only think aboout single client access into server. And it works perfectly. Now the requirements changing and ask me to make it multi-client.
    Iam using thread to control multi-client and it also work. But when the client1 send information then client2 then back to client1. And so on then socket is closed and data is corrupted because the server doesnot know which client is it talking to. I know that i am using thread not properly. Actually i don't really much understand thread so that why my program doesnot work properly.
    I know this is too general question. But from your experience could you suggest me some resource from internet to look up more information about thread. And when using thread to control the connection for client and how do we control the input and output from client and server. Some suggestions please
    My programs is based on GUIs and if so should i put thread on the button or menuitem something.
    Thanks alot

    I think i should use thread because i should enable multiple clients access to my server.
    Actually what am i doing is :
    I have a server running and client access in make a request to server then feedback the files or whatsoever data that server make and send back to client.
    when i run another client. the data send to Server is corrupted because server doesnot know which one is for client 1 or client 2 as i said. If i use thread to control the connections only or control the action between the server and client. Iam not really good at thread so that my server disconnect the client.
    What strategy would you use if you doing this. Just in generally
    Thanks

  • Can I run the code in another project?

    I use Jdeveloper v903.
    I have three projects.
    Can I run a project's code from other project within the same workspace?
    Stephen

    Stephen, before I [try to] answer your question I think that you need to adjust a bit more to the paradigm shift between a form based application and the true oop metaphor.
    Ok. Now, to accomplish what you want is simple. Suppose you have BC4j, Client1, and Client2 projects. Within Client2 you want to instantiate classes in Client1. Besides making Client2 dependant on Client1 in the settings, which by the way only simply ensures proper [re]build of projects, also make sure that your classes within each project are inside a package, then in the client2 code import the client1 package. Thats it.
    In case you did not package your existing code, be ready for some jDev glitches in renaming/moving classes into a new package. You can use the refactor feature, but you should manually make absolutely sure your old classes are not still sitting around in the old hierarchy. Due to the hassle involved, if your jclient projects are relatively small (and again only if you did not package em up in the first place), you are better off creating new client projects and creating your classes in packages from the onset.
    Hope this helps;
    -Nat

  • Working with BW Multi Clients

    Hi.
    I know that in BW the System you work in has only one client for Configuring. In my case I need to create two clients for data purposes (have two different  not parallel projects), but I was thinking in creating these two clients for development purposes also, at the end the configuration is the same for the whole system, so if a user enters on client1 and another on client2, if one of them tries to modify one object, it becomes locked for the rest of the users.
    QUESTION: Have any of you worked in a Multi Client Landscape for BW? Is it possible to develop in one System using two different clients?
    Greetings.
    Jesús R. Cova Graffe

    Hi,
    As stated in the SAP link you can't effectively operate BW with 2 productive clients in one system. However data can be separated by means of authorization and/or splitting ODS'/cubes on organizational level (compcode etc.)
    In a technical point of view all generated objects like ods,cube, update rules, tables and structures are client independent objects. Here a 2nd client within BW won't help to support 2 "separate" development projects.
    In my experience it's best to put separate BW projects together on one dev box. In this way the developers are aware in an early stage when shared objects are hit. Before QA/Integration testing. From what i've seen and experienced it only saves time, and yes it is annoying.. because everyone has to play by the rules..
    Are there any questions left: ask,
    if you're satisfied, please reward.
    Kind regards, Patrick Rieken.

  • ACE VIP not Responding to Ping and cant Connect

    Hello All,
    I recently deployed an ACE 4710 Appliance. Configs seems right but clients cant Ping the VIP and acnt also connect to the VIP. Also VIP Dosent show in 'sh arp'.
    Pls HELP!!!
    See the configs!!
    =~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2011.10.11 10:48:14 =~=~=~=~=~=~=~=~=~=~=~=
    sh runGenerating configuration....
    boot system image:c4710ace-mz.A4_2_0.bin
    hostname STERLING-ACE
    interface gigabitEthernet 1/1
      channel-group 1
      no shutdown
    interface gigabitEthernet 1/2
      channel-group 1
      no shutdown
    interface gigabitEthernet 1/3
      channel-group 1
      no shutdown
    interface gigabitEthernet 1/4
      channel-group 1
      no shutdown
    interface port-channel 1
      switchport trunk allowed vlan 10,200,205,210,215
      no shutdown
    --More--
    access-list INBOUND line 10 extended permit ip any any
    access-list INBOUND line 16 extended permit icmp any any
    access-list INBOUND line 24 extended permit icmp any any echo
    probe http BANK-APP
      interval 2
      faildetect 2
      passdetect interval 2
      expect status 200 200
      open 1
    probe icmp PING
      description ***simple ping monitor***
      interval 10
      passdetect interval 60
      passdetect count 2
      receive 1
    probe tcp TCP80
      interval 10
      passdetect interval 10
      passdetect count 2
    --More--
      receive 1
      open 5
    rserver host BANK-APP-SERVER1
      description ***GUI SERVER 1***
      ip address 172.20.1.50
      probe PING
      inservice
    rserver host BANK-APP-SERVER2
      description ***GUI SERVER 2***
      ip address 172.20.1.51
      probe PING
      inservice
    rserver host BANK-APP-SERVER3
      description ***GUI SERVER 3***
      ip address 172.20.1.52
      probe PING
      inservice
    rserver host BANK-APP-SERVER4
      description ***GUI SERVER 4***
      ip address 172.20.1.53
      probe PING
    --More--
      inservice
    rserver host THIN-CLIENT1
      description ***CLI SERVER 1***
      ip address 172.20.1.34
      probe PING
      inservice
    rserver host THIN-CLIENT2
      description ***CLI SERVER 2***
      ip address 172.20.1.35
      probe PING
      inservice
    rserver host THIN-CLIENT3
      description ***CLI SERVER 3***
      ip address 172.20.1.36
      probe PING
      inservice
    rserver host THIN-CLIENT4
      description ***CLI SERVER 4***
      ip address 172.20.1.37
      probe PING
      inservice
    --More--
    serverfarm host CLI-GROUP
      predictor leastconns
      probe TCP80
      rserver THIN-CLIENT1
        inservice
      rserver THIN-CLIENT2
        inservice
      rserver THIN-CLIENT3
        inservice
      rserver THIN-CLIENT4
        inservice
    serverfarm host GUI-GROUP
      predictor leastconns
      probe TCP80
      rserver BANK-APP-SERVER1
        inservice
      rserver BANK-APP-SERVER2
        inservice
      rserver BANK-APP-SERVER3
        inservice
      rserver BANK-APP-SERVER4
        inservice
    --More--
    parameter-map type connection TCP-PARAM-MAP
      set timeout inactivity 360000
    class-map type management match-any REMOTEACCESS
      description remote access traffic match
      2 match protocol ssh any
      3 match protocol icmp any
      4 match protocol telnet any
      5 match protocol xml-https any
      6 match protocol http any
      7 match protocol https any
    class-map match-all TCP-CLASS
      description TCP CONNECTION TIMER
      2 match any
    class-map match-all VS_WEB1
      2 match virtual-address 10.0.0.115 any
    class-map match-all VS_WEB2
      2 match virtual-address 10.0.0.113 any
    policy-map type management first-match REMOTEPOLICY
    --More--
      class REMOTEACCESS
        permit
    policy-map type loadbalance first-match HTTP_LB1
      class class-default
        serverfarm CLI-GROUP
    policy-map type loadbalance first-match HTTP_LB2
      class class-default
        serverfarm GUI-GROUP
    policy-map multi-match HTTP_MULTI_MATCH1
      class VS_WEB1
        loadbalance vip inservice
        loadbalance policy HTTP_LB1
        loadbalance vip icmp-reply
    policy-map multi-match HTTP_MULTI_MATCH2
      class VS_WEB2
        loadbalance vip inservice
        loadbalance policy HTTP_LB2
        loadbalance vip icmp-reply
    policy-map multi-match TCPIP-POLICY
      class TCP-CLASS
    connection advanced-options TCP-PARAM-MAP
    service-policy input REMOTEPOLICY
    service-policy input TCPIP-POLICY
    interface vlan 10
      description ***LAN LEG***
      ip address 10.0.0.66 255.255.255.0
      no icmp-guard
      access-group input INBOUND
      no shutdown
    interface vlan 200
      description ***THIN CLIENT VLAN****
      ip address 172.20.1.33 255.255.255.240
      no icmp-guard
      access-group input INBOUND
      service-policy input HTTP_MULTI_MATCH1
      no shutdown
    interface vlan 210
      description ***BANK APP SERVER VLAN****
      ip address 172.20.1.49 255.255.255.240
      no icmp-guard
    --More--
      access-group input INBOUND
      service-policy input HTTP_MULTI_MATCH2
      no shutdown
    ip route 0.0.0.0 0.0.0.0 10.0.0.200
    username admin password 5 $1$ouG5.Okh$jwBoWkMiWstoTPwb9K9ku1  role Admin domain
    default-domain
    username www password 5 $1$M31zwdiF$iY8Y5e9nV2sMM2HxwrQI7/  role Admin domain de
    fault-domain
    STERLING-ACE/Admin#
    Thanks!!

    Hi Joshua,
    class-map match-all VS_WEB1
      2 match virtual-address 10.0.0.115 any
    class-map match-all VS_WEB2
      2 match virtual-address 10.0.0.113 any
    You have  applied
    "service-policy input HTTP_MULTI_MATCH1"  in VLAN 200 and 210 but as per the config I believe it should be applied to VLAN10.
    interface vlan 10
      description ***LAN LEG***
      ip address 10.0.0.66 255.255.255.0
      no icmp-guard
      access-group input INBOUND
      no shutdown
    Can you apply the service policy in VLAN 10 and let me know the result.

  • Error mounting NFS share - mount.nfs: Operation not permitted

    I've got an NFS share on a FreeBSD server which I mount via fstab.
    It mounts automatically at boot and everything is fine.
    However, if I unmount it and try to mount it again I get:
    mount.nfs: Operation not permitted
    I have tried vers=3 and nfsvers=3 in fstab, but to no avail.
    rpcbind is allowed in /etc/hosts.allow.
    Does anyone have any ideas?
    fstab entry:
    server:/path/to/files /mnt/files nfs ro,hard,intr,nfsvers=3 0 0

    Tagging along, I have the same problem, although I have a different setup:
    - Server = Arch linux
    - Client1 = Debian Testing linux
    - Client2 = Arch linux
    On client1, I'm unable to mount all NFS-shares. 2 out of 3 mount ok and the third fails with this error (both through fstab and manually):
    # mount -a
    mount.nfs4: access denied by server while mounting (null)
    On Client2 I'm able to connect automatically and manually to all shares.
    Maybe it is Debian-related, but the debian user forums have not been of much help...
    THX for any input!
    Last edited by zenlord (2010-03-04 12:07:04)

  • DAD config / mod plsql / apache2

    I’m not sure if this is the right forum….please let me know if I need to post elsewhere.
    Using mod/plsql with apache2 and 11gR2 standard edition one, I need to setup an environment where each client has its own url, such as this:
    https://theserver.com/thedad/client1
    https://theserver.com/thedad/client2
    https://theserver.com/thedad/client3
    All clients use the same dad, yet need different URLs. Is there a way to do this with apache / mod plsql?
    I’ve considered this:
    https://client1.theserver/thedad
    https://client2.theserver/thedad
    https://client3.theserver/thedad
    This would work, I’d rather not have sub domains though.
    I've also considered:
    https://theserver.com/dad1/client1
    https://theserver.com/dad2/client2
    https://theserver.com/dad3/client3
    This works as each dad can point to the same db user. Problem with this is suppose there are 50 clients, having 50 dads is not a good solution.
    Is there some way to have multiple clients each having its own url while sharing a single dad?
    Edited by: brian.mcginity on Jan 29, 2012 2:06 PM

    Thanks for your help. client1 is the id of the client and not a procedure.
    In the example url: https://theserver.com/thedad/client1 client 1 is the id of the client not the procedure being called.
    So to call proc_a the url would look like: https://theserver.com/thedad/client1/proc_a
    For client2 to call proc_a the url would be: https://theserver.com/thedad/client2/proc_a
    There are many clients, procedures and packages, like:
    https://theserver.com/thedad/client1/proc_a
    https://theserver.com/thedad/client1/proc_b
    https://theserver.com/thedad/client2/proc_b
    https://theserver.com/thedad/client3/proc_b
    https://theserver.com/thedad/clientN/proc_N

Maybe you are looking for

  • "Selected disk does not exist" after install using Unetbootin

    Hello, I downloaed core iso file and use unetbootin to created a bootable usb disk, then I booted from the usb disk, installed the system as usual, then I rebooted the machine, the grub menu is shown, but when I selected archlinux, it shows:    Booti

  • My mac pro won't sleep on its own or when I try to put it to sleep.

    Hello all, I have a 2007 Mac Pro and for some reason, it won't go to sleep.  Normally if it was idle for an hour or two, it would automatically sleep but not anymore.  If I put it to sleep manually, it wakes right back up.  I have to shut it down so

  • Embed streaming video from my own Server into InDesign CS5

    Hi all, I try to place a streaming video into my Indesign CS5 Document. InDesing seems to find the File, cause it shwos up the preview image in the Media Window, but the videoslider nor the play-button of the media-window is working. the link (Red5 S

  • Need help in resolving CONNECT BY loop in user data in Oracle 9.2.0.5 Ver

    Hi Everyone, Below are the scripts to reproduce the error CREATE TABLE TESTING C1 NUMBER, C2 NUMBER, GRP NUMBER Insert into TESTING (C1, C2, GRP) Values (1, 2, 100); Insert into TESTING (C1, C2, GRP) Values (1, 3, 100); Insert into TESTING (C1, C2, G

  • Solaris 8 installation problems

    Hello, I'm trying to install Solaris 2.8 on a Compaq server. I have the tree cd's downloaded from your site. config: internal ultra scsi 2 ctrlr with 1 * 18gb H/D internal ide ctrlr with cd drive and diskette drive In both ways , i do an update drive