Archive for August, 2010

Today i developed my second, project server 2010 workflow and was able to deploy it successfully and is working and executing fine enough

Will share the Solution file with all of you via mail, do let me know if you all want to have a session on this we can organize one, and share my experience with all you guys… Cheers 🙂

Figure :: New EPT Creation Using Newly Deployed Workflow

Figure :: New Custom PDP Page added to Workflow Initiation Stage

Figure :: New EPT in Action

Figure :: After EPT Kicks Off Proposal Information being fed through custom PDP page

Figure :: Workflow Tailored to accommodate just 3 steps before getting further

Figure :: Custom Workflow in Action, some more details

Well before i close this, There is still a lot more to learn and will be sharing all those with you all in my shortly upcoming post, stay tuned
And want to thank SDK for helping me out, great guide for starting 🙂

Well here is the Link, have uploaded the solution file, this is the simplest of all as i want you to get started on the very basic one,
then you may move to a complex workflow, ignoring me you can directly work through the SDK process as well

Download VS 2010 Solution File : http://cid-6442ed85fdd7f34a.office.live.com/self.aspx/Public/ProjectServerWorkflowDev%5E_Sunil.zip

This Solution file is placed in the windows live sky drive >> my sapce >> public folder

Read Full Post »

After attaching the WSSContent_DB on the newly migrated PWA site, I was trying to update the old links through server setting
but since we Were having large no of projects, hence workspaces could not be updated manually, we tried to use “WSSRelinker” tool provided by MS
but were encountering problems and hence could not use it,
so finally went to SDK and extended the code to accommodate my requirements and was successfully able to relink all my sites,
the code is pretty small, hope you find it useful

“You can further extend the code to even check if URL doesn’t exist then create new workspace and all sorts of validation / customization could be done”

Note : Do not forget to add relevant references

Private void UpdateWSSURL()

PWA_DevProjectWebSvc.Project PrjWebSvc = new RnDProject.PWA_DevProjectWebSvc.Project();
PrjWebSvc.Url = @"http://ServerName/pwa_dev/_vti_bin/psi/project.asmx";
PrjWebSvc.Credentials = new NetworkCredential("username", "password", "domain");

PWA_DevWSSInteropWebSvc.WssInterop wssInterOpSvc = new PWA_DevWSSInteropWebSvc.WssInterop();
wssInterOpSvc.Url = @"http://ServerName/pwa_dev/_vti_bin/psi/wssInterop.asmx";
wssInterOpSvc.Credentials = new NetworkCredential("username", "password", "domain");

PWA_DevWSSInteropWebSvc.WssSettingsDataSet dsCurrentWssInfo = wssInterOpSvc.ReadWssSettings();
PWA_DevWSSInteropWebSvc.WssSettingsDataSet.WssAdminRow adminRow = dsCurrentWssInfo.WssAdmin[0];
string siteCollection = adminRow.WADMIN_DEFAULT_SITE_COLLECTION;

string ConnStr = @"Data Source=ServerName;Initial Catalog=Database;User Id=UserId;Password=password";
string SQLQuery = "SELECT [ProjectUID],[ProjectName],[ProjectWorkspaceInternalHRef] FROM MSP_EpmProject_UserView";
SqlConnection Conn = new SqlConnection(ConnStr);
SqlCommand cmd = new SqlCommand(SQLQuery, Conn);
SqlDataReader rdr = cmd.ExecuteReader();

while (rdr.Read())
        string id = rdr["ProjectUID"].ToString();
        string newworkspace = rdr["ProjectName"].ToString();
        Guid PrjId = new Guid(id);
        string URL = @"http://" + siteCollection + "/" + newworkspace;
        this.textBox1.AppendText(Environment.NewLine + URL);
        PrjWebSvc.UpdateProjectWorkspaceAddress(PrjId, siteCollection + "/" + newworkspace, wssWebAppUid);
    catch (Exception ex) // Just Added to let the loop execute even if there is an error


Read Full Post »