Cascade Skyline - with Microsoft Logo and Project Support header - author Brian Smith

  • Brian Smith's Microsoft Project Support Blog

    My SSP stopped working when I restored to another domain! Unable to Edit a Project Server or SharePoint Shared Services Provider.

    • 7 Comments

    I’m guessing this problem may be more of an issue for us Project Server 2007 support guys at Microsoft than for most customers – but I can certainly see scenario’s where this one would bite you too, so worth an explanation.  I’ll throw in all the text from the logs etc. at the end as it makes better reading for the search indexers than for normal people and just concentrate first on what breaks and how to work around the issue.

    When you are restoring a farm backup you get the option to update the accounts used for most things – then some of the other accounts you can set once you have things up and running.  However, if you have added any accounts into the “Process Account with Access to this SSP” section of the Edit Properties part of the SSP the accounts just get carried through to the new configuration database.  Unfortunately this can break some stuff – and even more unfortunate is that the first thing it breaks is the page where you would go to remove them!  Basically the page tries to validate the data it has and gives the following error:-

    An unhandled exception occurred in the user interface.Exception Information: The specified account name is invalid.
    Parameter name: account

    The same problem occurs if an account added in Process Accounts is removed from AD – and this may well be the most common customer scenario if restoring across domains is not involved.  Verbose logging for Office Server General will also show the actual DOMAIN\User that is causing the problem.

    You can also see the same error if you try to run stsadm –o enumssp.  And other SSP related jobs may post a very similar error in the Application Event Log as they fail to work.  Our workaround until now has been the usual; create a new SSP and change associations, and only today did I get to the bottom of this particular failure.  The only supportable workaround is to take a fresh backup after removing any accounts from the Process Accounts section.  The stsadm –o editssp also does not seem to give a way to remove an account that is not valid – giving an error:

    A failure occurred during the processing of this command. Check diagnostic logs
    for more information.

    and logs the same kind of thing in the ULS logs as detailed below. 

    So here is the less interesting stuff that Live and any other search engines I have forgotten can lap up…

    ULS Log

    =======

    Verbose

    Office Server

    Office Server General

    792o

    Verbose

    NTAccount 'DOMAIN\User could not be translated to a SID. Exception: System.Security.Principal.IdentityNotMappedException: Some or all identity references could not be translated. at System.Security.Principal.NTAccount.Translate(IdentityReferenceCollection sourceAccounts, Type targetType, Boolean forceSuccess) at System.Security.Principal.NTAccount.Translate(Type targetType) at Microsoft.Office.Server.Utilities.WindowsSecurity.ValidateAccount(NTAccount account, Boolean throwIfInvalid)

    Exception

    Office Server

    Office Server General

    837w

    Exception

    Unhandled page level exception. Path: /_admin/sspdetails.aspx, Error: The specified account name is invalid. Parameter name: account, Details: System.ArgumentException: The specified account name is invalid. Parameter name: account ---> System.Security.Principal.IdentityNotMappedException: Some or all identity references could not be translated. at System.Security.Principal.NTAccount.Translate(IdentityReferenceCollection sourceAccounts, Type targetType, Boolean forceSuccess) at System.Security.Principal.NTAccount.Translate(Type targetType) at Microsoft.Office.Server.Utilities.WindowsSecurity.ValidateAccount(NTAccount account, Boolean throwIfInvalid) --- End of inner exception stack trace --- at Microsoft.Office.Server.Utilities.WindowsSecurity.ValidateAccount(NTAccoun... Continues...

    Application Event Log

    ==================

    No specific error relating to the failed Edit Properties page - but due to the same root cause there would likely be errors like the one below, possibly every minute.

    Event Type: Warning

    Event Source: Office SharePoint Server

    Event Category: Office Server Shared Services

    Event ID: 5783

    Date: 6/12/2008

    Time: 10:01:52 AM

    User: N/A

    Computer: W2K3

    Description: Synchronization for Shared Services Provider 'SSP1' has failed. The operation will be retried.

    Reason: The specified account name is invalid.

    Parameter name: account

    Technical Support Details:

    System.ArgumentException: The specified account name is invalid.

    Parameter name: account ---> System.Security.Principal.IdentityNotMappedException: Some or all identity references could not be translated. at System.Security.Principal.NTAccount.Translate(IdentityReferenceCollection sourceAccounts, Type targetType, Boolean forceSuccess) at System.Security.Principal.NTAccount.Translate(Type targetType) at Microsoft.Office.Server.Utilities.WindowsSecurity.ValidateAccount(NTAccount account, Boolean throwIfInvalid)

    --- End of inner exception stack trace ---

    at Microsoft.Office.Server.Utilities.WindowsSecurity.ValidateAccount(NTAccount account, Boolean throwIfInvalid) at Microsoft.Office.Server.Administration.SharedAccessRule.Validate() at Microsoft.Office.Server.Administration.SharedComponentSecurity.SetAccessRule(SharedAccessRule accessRule) at Microsoft.Office.Server.Administration.SharedComponentSecurityFormatter.DeserializeFromXml(XmlReader xmlReader, SharedComponentSecurity& security) at Microsoft.Office.Server.Administration.SharedComponentSecurityFormatter.FromXmlString(String xml) at Microsoft.Office.Server.Administration.SharedResourceProvider.InternalGetAccessControl() at Microsoft.Office.Server.Administration.SharedResourceProvider.GetApplicationSecurity() at Microsoft.Office.Server.Administration.SharedResourceProvider.Microsoft.Office.Server.Administration.ISharedComponent.Synchronize() at Microsoft.Office.Server.Administration.SharedResourceProviderJob.Execute(Guid targetInstanceId)

  • Brian Smith's Microsoft Project Support Blog

    If you didn’t get to Orlando – try TechEd Online

    • 0 Comments

    One of the cool things Christophe and I got to do at TechEd Developer 2008 was an interview in the Fish Bowl with Richard Campbell about our “Line of Business Integration” session.  You can view the interview here, and see other great content from TechEd on the Developer Landing page and the Library page.  Enjoy!

    Technorati Tags: ,
  • Brian Smith's Microsoft Project Support Blog

    New “real-world” Project Server 2007 deployment column on TechNet

    • 0 Comments

    If you go to http://technet.microsoft.com/en-us/office/projectserver/default.aspx you will see a new EPM column – “From the Trenches”.  This features articles by Chris Vandersluis - president and founder of Montreal, Canada–based HMS Software, a Microsoft Gold Certified Partner.  Thanks Chris for this great content – and If there are other partners out there who want to share experience with the wider community then please send me e-mail by clicking the EMAIL link at the top of the page.

    Technorati Tags:

  • Brian Smith's Microsoft Project Support Blog

    TechEd 2008 switches tracks from the Developer to the IT Professional

    • 0 Comments

    I really enjoyed TechEd last week – and thanks to all who attended the sessions and came and said “Hi”.  I’m back in the office this week doing proper work – but Christophe is back down in the sunshine of Florida.

    This week Christophe will be joined by Simon Floyd, Michael Jordan and Emmanuel Fadullon at TechEd IT Professionals in Orlando and they will be delivering the following EPM sessions:

    OFC255

    Best Practices: Enabling Innovation Process Management Using Microsoft Office Enterprise Project Management Solution and Microsoft Office SharePoint Server 2007

    Tuesday, June 10 10:30 AM

    In today’s fast-paced global economy, innovation is the key to the next big breakthrough in products, services, and processes. However, businesses are often challenged with facilitating innovation due to cultural, strategic, or logistical pitfalls. This session covers the best practices for fostering a culture of innovation by enabling an organization’s most valuable assets, its people, to actively and easily participate in the innovation process. A live demonstration shows how anyone can capture, investigate, formulate, and evaluate ideas to conclusion using the Microsoft Office Enterprise Project Management solution and SharePoint Server 2007.

    OFC358

    Deploying Microsoft Office Enterprise Project Management Solution 2007 into an Existing Microsoft Office SharePoint Server Environment

    Tuesday, June 10 1:15 PM

    Microsoft Office Enterprise Project Management Solution 2007 (EPM 2007) is a very unique form of Windows SharePoint Services V3. This sessions provides you with best practices, learned in Performance Labs in Redmond, to keep in mind when you want to deploy EPM 2007 into an existing MOSS farm.

    OFC450

    Microsoft Office Project Server 2007 Deployment for High Availability and Scalability

    Wednesday, June 11 1:00 PM

    This session covers the components of the EPM solution and the main considerations when planning for deployments that require high availability, when to scale up and out, points of failure and software/hardware boundaries.

    OFC53-TLC

    Microsoft Office Project Server 2007 Disaster Recovery

    Thursday, June 12 8:30 AM

    Learn how to recover from a catastrophic failure on your SharePoint/EPM farm. This session discusses the options to recover from a loss of any component of your SharePoint/EPM Farm: SQL server, application server, disk, etc. It covers SharePoint/EPM Farm or database restore options including pros and cons as well as a live demo. This session does not cover detailed backup/restore plans and all high availability options.

    Beside attending all these Project Server sessions, you can also meet them at the Project Server booth, don’t be shy!

  • Brian Smith's Microsoft Project Support Blog

    TechEd 2008 Preview – Part 4 – COM Add-in from Project Professional making PSI calls

    • 1 Comments

    This is the last TechEd sample and is a very simple example of a PSI call from Project Pro (or Standard for that matter).  It shows how a user of the client not connected to the server can still make PSI calls.  Obviously they need an account in the PWA they are communicating with.  The sample shows a PSI call to check that the local project name (or any text you want to enter manually) is in use on the Project Server.  The response is shown on the form for the add-in and also put into the text1 field of the project – just to show how local data can also be updated with VSTO applications. 

    The details for creating a VSTO add-in for project were very well covered in Jack Dahlgren's posting http://zo-d.com/blog/archives/programming/making-the-move-from-vba-to-vsto-in-microsoft-project.html posting recently – thanks Jack – so I will just give samples of my code and not repeat the “how to” section.  I also needed web references to the Project and LoginWindows web services.  My code is also in C# so some differences to Jack’s posting. 

    The ThisAddIn.cs file looks like this and is adding a toolbar button and setting the for to show when the button is clicked:-

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Xml.Linq;
    using MSProject = Microsoft.Office.Interop.MSProject;
    using Office = Microsoft.Office.Core;
    using System.Windows.Forms;
    
    namespace TechEdComAddIn
    {
        public partial class ThisAddIn
        {
            private Office.CommandBar commandBar;
            private Office.CommandBarButton importButton;
    
            private void ThisAddIn_Startup(object sender, System.EventArgs e)
            {
                
                if (commandBar == null)
                {
                    int barPosition = 1;
                    bool isMenuBar = false;
                    bool isTemporary = true;
                    commandBar = Application.CommandBars.Add("ValidateBar", barPosition,
                                                             isMenuBar, isTemporary);
                }
                
                try
                {
                    importButton = (Office.CommandBarButton)commandBar.Controls.Add(
                        Office.MsoControlType.msoControlButton, missing, missing, missing, missing);
                    importButton.Style = Office.MsoButtonStyle.msoButtonCaption;
                    importButton.Caption = "Validate Project Name";
                    importButton.Tag = "Validate Project Name";
                    importButton.TooltipText = "Validates a name for later use in Project Server.";
                    importButton.Click +=
                        new Office._CommandBarButtonEvents_ClickEventHandler(ImportButtonClick);
    
                    commandBar.Visible = true;
                }
                catch (ArgumentException ex)
                {
                    MessageBox.Show(ex.Message, "Error adding toolbar button",
                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                
            }
    
            private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
            {
            }
    
            private void ImportButtonClick(Office.CommandBarButton ctrl, ref bool cancel)
            {
                //ImportDialogBox importDialog = new ImportDialogBox();
                //importDialog.Show();
                
                ProjNameValidate myForm = new ProjNameValidate(); ;
                myForm.Show();
            }
            
           
            #region VSTO generated code
    
            /// <summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            private void InternalStartup()
            {
                this.Startup += new System.EventHandler(ThisAddIn_Startup);
                this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
            }
            
            #endregion
        }
    }
     
    The form looks like this:-
     
    image 
    And the code behind:-
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Net;
    using System.Text;
    using System.Windows.Forms;
    
    namespace TechEdComAddIn
    {
        public partial class ProjNameValidate : Form
        {
            private const string URLPREFIX = "http://";
            private const string LOGINWINDOWSWEBSERVICE = "_vti_bin/PSI/LoginWindows.asmx";
            private const string PROJECTWEBSERVICE = "_vti_bin/PSI/Project.asmx";
    
            private string baseUrl = "http://brismithwfe/cal/";
    
    
      
            private static WebSvcLoginWindows.LoginWindows loginWindows =
                new WebSvcLoginWindows.LoginWindows();
            private static WebSvcProject.Project project =
                new WebSvcProject.Project();
    
            public ProjNameValidate()
            {
                InitializeComponent();
                string projName = Globals.ThisAddIn.Application.ActiveProject.Name.ToString();
                int extLocation = projName.LastIndexOf(".mpp");
                textBoxProjectName.Text = projName.Substring(0, extLocation);
            }
    
            private void btnValidateName_Click(object sender, EventArgs e)
            {
                try
                {
                    loginWindows.Url = baseUrl + LOGINWINDOWSWEBSERVICE;
                    loginWindows.Credentials = CredentialCache.DefaultCredentials;
                    project.Url = baseUrl + PROJECTWEBSERVICE;
                    project.Credentials = CredentialCache.DefaultCredentials;
    
                   
                    WebSvcProject.ProjectDataSet dsProject =
                            new WebSvcProject.ProjectDataSet();
                    dsProject = project.ReadProjectList();
                    foreach (WebSvcProject.ProjectDataSet.ProjectRow rowProject in dsProject.Project)
                        if (rowProject.PROJ_NAME == textBoxProjectName.Text.ToString())
                        {
                            lblResponse.Text = "Project name already in use";
                            lblResponse.Visible = true;
                            break;
                        }
                        else
                        {
                            lblResponse.Text = "Project name is OK to use.";
                        }
                    Globals.ThisAddIn.Application.ActiveProject.Text1 = lblResponse.Text;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
    
            }
        }
    }
    
    I don’t think there is anything too complicated.  I trim the .mpp off the local filename and then see if it exists on the server.  Globals is the way to interact with the local application object.
    Once you have that available most of the VBA developers out there should be on home territory.  Take a look at the VSTO stuff – it is very simple to deploy too – as Jack’s article outlines.
    Technorati Tags: , ,
     
     
     
     
     
     
     
Page 74 of 97 (481 items) «7273747576»