Bulk create Project Site using template
Hi,
We have around 1000 projects in our PS2013 environment, and project site is not associated any of them. We have created a new template for project site.
To now create and associate this template with each project (without having to manually publish), we have to use option of managing connected site, but here we can create only one site at a time.
Is there a way for bulk create for multiple projects in one shot?
Thanks in advance
Atul Sharma
Hi Atul
It might be a little late for this answer but given that template names are fixed most of the time and don't change often, i use powershell to obtain the template ID and simply pass it on in the code to be used at the time of creation
//////// Powershell to get Template Name/////
$url = “https://servername/pwa”
$site= new-Object Microsoft.SharePoint.SPSite($url )
$loc= [System.Int32]::Parse(1033)
$templates= $site.GetWebTemplates($loc)
foreach ($child in $templates){ write-host $child.Name “ ” $child.Title}
ID should look something like this -- {7E3D804F-0EB0-46E1-8D12-1FC4C441DF99}#Custom Project Site Template V15
Once i get the desired ID's i use them in code to create the site
SvcWssInterop.WssInteropClient WsClient = SetWSSInteropClientEndPoints();
SvcWssInterop.ProjectWSSInfoDataSet WssProjInfoDS = new SvcWssInterop.ProjectWSSInfoDataSet(); WssProjInfoDS = WsClient.ReadWssData(PrjUID);
SvcWssInterop.WssSettingsDataSet WssSettingDS = new SvcWssInterop.WssSettingsDataSet(); WssSettingDS = WsClient.ReadWssSettings();
SvcWssInterop.WssSettingsDataSet.WssAdminRow adminRow = WssSettingDS.WssAdmin[0];
string siteCollection = adminRow.WADMIN_DEFAULT_SITE_COLLECTION;
string templateName = "{7E3D804F-0EB0-46E1-8D12-1FC4C441DF99}#Custom Project Site Template V15";//adminRow.WADMIN_STS_TEMPLATE_ID;
Guid wssWebAppUid = adminRow.WADMIN_CURRENT_STS_SERVER_UID;
int templateLCID = adminRow.WADMIN_STS_TEMPLATE_LCID;
System.Threading.Thread.Sleep(5000);
WsClient.CreateWssSite(PrjUID, adminRow.WADMIN_CURRENT_STS_SERVER_UID, string.Empty, adminRow.WADMIN_STS_TEMPLATE_LCID, templateName);
PrjClient.QueuePublish(Guid.NewGuid(), PrjUID, true, "");
Thanks | Sunil Kr Singh | http://epmxperts.wordpress.com
Similar Messages
-
Creating project site failed in Project Server 2013
Hi Folks!
I save project site as template (even tried without making any change) and it seems a very common error but what it refering to in Queue Jobs error field below, it isn't! I had one SharePoint list on root site and all sub-site (project site) add stuff to
it through a custom web part. All is working good on staging server. But while moving on production and I guess (drunk probably! :() mistakenly deleted workflow column. I deleted the whole list now, removed all web parts, even created new instance of pwa :O
same error. Anyone who can guess any solution!!!
CreateWssSiteContent: Creating project site failed! Project Uid=33f076b2-3929-e411-93f4-3440b5c8d286, site URL=http://hqepm/PWA/Project 123, site name=Project
123. System.Runtime.InteropServices.COMException (0x8107058A): <nativehr>0x8107058a</nativehr><nativestack></nativestack>Column _ApprovalOutcome_ does not exist. It may have been deleted by another user.
http://hqepm/PWA/Project 123 at Microsoft.SharePoint.Library.SPRequestInternalClass.ApplyWebTemplate(String bstrUrl, String bstrWebTemplateContent, Int32 fWebTemplateContentFromSubweb, Int32 fDeleteGlobalListsWithWebTemplateContent,
Int32 fIgnoreMissingFeatures, String& bstrWebTemplate, Int32& plWebTemplateId) at Microsoft.SharePoint.Library.SPRequest.ApplyWebTemplate(String bstrUrl, String bstrWebTemplateContent, Int32 fWebTemplateContentFromSubweb, Int32 fDeleteGlobalListsWithWebTemplateContent,
Int32 fIgnoreMissingFeatures, String& bstrWebTemplate, Int32& plWebTemplateId)Microsoft.SharePoint.SPException: Column _ApprovalOutcome_ does not exist. It may have been deleted by another user.
http://hqepm/PWA/Project 123 --->
Thanks, KashifHi Christoph,
I apologise I should have posted the solution here. However, yes indeed I did solve it. As far as I remember I went through the Recycle Bin of SharePoint and restored the deleted List which contains the column, error was refering to and all started working
fine. I guess I recreated a new list and didn't touch the restored one, may be beause of fear factor :)
Hope this helps you and others.
Thanks
Thanks, Kashif -
Can't create Project from the Template or access project template
Dear Experts,
We are facing a issue while trying to access the project template/create the project from project template.
we have 4 project template in place and of these two are working perfectly fine but
From remaining two we are not being able to create project and even templates are not accesible , whenever we are trying to access the project template system rotates a circle for some time and keeps us on the same page.
Even when we are trying to create project from the same template, system does the same again rotates the circle for some time and keeps us on the same screen.
And System is not throwing any error for the same (we have checked in the log as well) just not letting us in and not allowing us to create project.
Any Help Will be Highly Appreciated.
Regards,
Rakesh DaiyaDear Experts,
We were able to find out the issue,
We added 3 groups to the template with "Reviewer" access with "Document Only" Type in the project template.
When we changed the type to "Template and Document" from "Document Only" and system started allowing us to create projects from the template.
Can anyone please help me with one query,
Can we add a group(which includes all the buyers) with reviewer access and with Document only type?
Does this really be a reason behind projects are not getting created from template?
Any help will be appreciated
Regards,
Rakesh Daiya -
Is it possible to create Secondary Tile using Templates in Windows Store apps?
Hi Team,
We can update Secondary Tile with Templates using notificatations, Is it possible to create Secondary Tile using Template in Start Menu
Tanks,
Siva Varri
Thread response from msdnWhat do you mean by "in Start Menu"? Do you mean Live tile? See https://msdn.microsoft.com/en-us/library/windows/apps/hh465403.aspx
https://msdn.microsoft.com/en-us/library/windows/apps/dn468032.aspx
Best Regards,
Please remember to mark the replies as answers if they help -
How to create personal site using csom ?
I am using Office 365. I am trying to create personal site using following code
private void createPersonalSite()
try
//using (SPSite site = new SPSite("Site URL"))
//SPServiceContext context = SPServiceContext.GetContext(site);
var targetSite = new Uri("https://test/sites/18thFeb");
var securePassword = new SecureString();
foreach (char c in adminPassword)
securePassword.AppendChar(c);
adminUserId = "[email protected]";
var onlineCredentials = new SharePointOnlineCredentials(adminUserId, securePassword);
ClientContext clientContext = new ClientContext("https://test/sites/18thFeb");
clientContext.Credentials = onlineCredentials;
//Get user profile
//// Get the PeopleManager object and then get the target user's properties.
//Microsoft.SharePoint.Client.UserProfiles.PeopleManager peopleManager = new Microsoft.SharePoint.Client.UserProfiles.PeopleManager(clientContext);
//Microsoft.SharePoint.Client.UserProfiles.PersonProperties personProperties = peopleManager.GetPropertiesFor("domainName\\userName");
//personProperties.UserProfileProperties.
Microsoft.SharePoint.Client.UserProfiles.ProfileLoader loader = Microsoft.SharePoint.Client.UserProfiles.ProfileLoader.GetProfileLoader(clientContext);
Microsoft.SharePoint.Client.UserProfiles.UserProfile profile = loader.GetUserProfile();
Microsoft.SharePoint.Client.Site personalSite = profile.PersonalSite;
clientContext.Load(personalSite);
clientContext.ExecuteQuery();
// Let's check if the site already exists
if (personalSite.ServerObjectIsNull.Value)
// Let's queue the personal site creation using oob timer job based approach
// Using async mode, since end user could go away from browser, you could do this using oob web part as well
profile.CreatePersonalSiteEnque(true);
//clientContext.ExecuteQuery();
catch
int a = 10;
The above code runs without any exception but does not create personal site. Can anyone please let me know what is the issue? Can you please provide me any code or link through which I can resolve the above issue?Hi,
According to your post, my understanding is that you want to create personal site using Client Object Model in SharePoint Online.
The following code snippet for your reference:
public void CreatePersonalSiteUsingCSOM(string tenantAdminUrl, string userName, string password, string[] emailIDs)
using (ClientContext _context = new ClientContext(tenantAdminUrl))
try
SharePointOnlineCredentials _creds = new SharePointOnlineCredentials(userName, Utilities.StringToSecure(password));
_context.Credentials = _creds;
_context.ExecuteQuery();
ProfileLoader _profileLoader = ProfileLoader.GetProfileLoader(_context);
_profileLoader.CreatePersonalSiteEnqueueBulk(emailIDs);
_profileLoader.Context.ExecuteQuery();
catch(Exception _ex)
throw;
More information is here:
http://blogs.msdn.com/b/frank_marasco/archive/2014/03/25/so-you-want-to-programmatically-provision-personal-sites-one-drive-for-business-in-office-365.aspx
Best Regards
Dennis Guo
TechNet Community Support -
Hi Everyone,
Can you please help me.. how can i solve this problem.
please find out the following code which was i written..
DECLARE
-- Variables needed to create task hierachy
level1 NUMBER;
level2 NUMBER;
level3 NUMBER;
a NUMBER;
m NUMBER;
parent_level1 VARCHAR2(30);
parent_level2 VARCHAR2(30);
parent_level3 VARCHAR2(30);
number_of_tasks1 NUMBER; -- number of tasks/levels
number_of_tasks2 NUMBER;
number_of_tasks3 NUMBER;
number_of_tasks4 NUMBER;
-- Variables needed for API standard parameters
l_api_version_number NUMBER := 1.0;
l_commit VARCHAR2(1) := 'F';
l_return_status VARCHAR2(1);
l_init_msg_list VARCHAR2(1) := 'F';
l_msg_count NUMBER;
l_msg_index_out NUMBER;
l_msg_data VARCHAR2(2000);
l_data VARCHAR2(2000);
l_workflow_started VARCHAR2(1) := 'Y';
l_pm_product_code VARCHAR2(10);
-- Predefined Composit data types
l_project_in PA_PROJECT_PUB.PROJECT_IN_REC_TYPE;
l_project_out PA_PROJECT_PUB.PROJECT_OUT_REC_TYPE;
l_key_members PA_PROJECT_PUB.PROJECT_ROLE_TBL_TYPE;
l_class_categories PA_PROJECT_PUB.CLASS_CATEGORY_TBL_TYPE;
l_tasks_in_rec PA_PROJECT_PUB.TASK_IN_REC_TYPE;
l_tasks_in PA_PROJECT_PUB.TASK_IN_TBL_TYPE;
l_tasks_out_rec PA_PROJECT_PUB.TASK_OUT_REC_TYPE;
l_tasks_out PA_PROJECT_PUB.TASK_OUT_TBL_TYPE;
l_cust_rec PA_PROJECT_PUB.CUSTOMER_IN_REC_TYPE;
l_cust_tbl PA_PROJECT_PUB.CUSTOMER_TBL_TYPE;
l_person_id NUMBER;
l_project_role_type VARCHAR2(20);
l_responsibility_id NUMBER;
l_user_id NUMBER;
v_ind NUMBER;
API_ERROR EXCEPTION;
BEGIN
-- GET GLOBAL VALUES
select user_id, responsibility_id
into l_user_id, l_responsibility_id
from pa_user_resp_v
where user_name = 'SATISH' -- substitute valid username
and responsibility_name = '*PAC Projects Administrator'; -- substitute responsibility name
dbms_output.put_line( 'initilaization');
-- SET GLOBAL VALUES
pa_interface_utils_pub.set_global_info(
p_api_version_number => 1.0,
p_responsibility_id => l_responsibility_id,
p_user_id => l_user_id,
p_msg_count => l_msg_count,
p_msg_data => l_msg_data,
p_return_status => l_return_status);
dbms_output.put_line( 'Assigning values');
-- PRODUCT RELATED DATA
l_pm_product_code := 'GMS'; -- can be user defined
-- PRODUCT DATA (PROJECT_IN_REC_TYPE)
l_project_in.created_from_project_id := 11759;--'1746';--'11759'; -- Project id from template
l_project_in.project_name := 'TEST_VS_14052014';
l_project_in.pm_project_reference := 'TEST_VS_14052014';
l_project_in.description := 'CREATION OF PROJECT(VS)';
l_project_in.project_status_code := 'APPROVED';
l_project_in.carrying_out_organization_id := 652;--3274; -- can default from template
l_project_in.start_date := '01-JAN-2007'; -- can override default from template
l_project_in.completion_date := '31-JAN-2010'; -- can override default from template
l_project_in.actual_start_date := '01-JAN-2010';
l_project_in.actual_finish_date := '31-JAN-2010';
l_project_in.early_start_date := '01-JAN-2010';
l_project_in.early_finish_date :='31-JAN-2010';
l_project_in.late_start_date := '01-JAN-2010';
l_project_in.late_finish_date :='31-JAN-2010';
-- l_proj_in.process_mode := 'ONLINE';
-- l_project_in.customer_id := 1001;
--KEY MEMBERS DATA (PROJECT_ROLE_TBL_TYPE)
-- can be defaulted from the Template, but not from a Project
m := 1;
l_person_id := 34; -- need to get from Apps
l_project_role_type := 'PROJECT MANAGER';
l_key_members(m).person_id := 53;
l_key_members(m).project_role_type := 'PROJECT MANAGER';
-- l_class_categories(1).class_category := 'Engineering';
--l_class_categories(1).class_code := 'Programs';
--l_class_categories(2).class_category := 'Planned';
--l_class_categories(2).class_code := 'Active';
l_class_categories(3).class_category := 'Rank';
l_class_categories(3).class_code := 'CUST';
-- CUSTOMERS
v_ind := 0;
l_cust_rec.customer_id := 1001;
l_cust_rec.project_relationship_code := 'CLIENT'; --cus.project_relationship_code;
l_cust_rec.Bill_To_Customer_id := NULL; --cus.x_bill_customer_id;
l_cust_rec.contact_id := NULL; -- pa_interface_utils_pub.g_pa_miss_num;
l_cust_rec.project_contact_type_code := NULL; -- pa_interface_utils_pub.g_pa_miss_char;
l_cust_rec.customer_bill_split := NULL; --nvl(cus.customer_bill_split, pa_interface_utils_pub.g_pa_miss_num);
l_cust_rec.allow_inv_user_rate_type_flag := NULL; --nvl(cus.allow_inv_user_rate_type_flag, pa_interface_utils_pub.g_pa_miss_char);
l_cust_rec.inv_rate_date := NULL; --nvl(cus.inv_rate_date, pa_interface_utils_pub.g_pa_miss_date);
l_cust_rec.inv_rate_type := NULL; --nvl(cus.inv_rate_type, pa_interface_utils_pub.g_pa_miss_char);
l_cust_rec.inv_currency_code := NULL; --nvl(cus.inv_currency_code, pa_interface_utils_pub.g_pa_miss_char);
l_cust_rec.inv_exchange_rate := NULL; --nvl(cus.inv_exchange_rate, pa_interface_utils_pub.g_pa_miss_num);
l_cust_rec.bill_another_project_flag := 'Y'; --nvl(cus.bill_another_project_flag, pa_interface_utils_pub.g_pa_miss_char);
l_cust_rec.RECEIVER_TASK_ID := 35078;
v_ind := v_ind + 1;
l_cust_tbl (v_ind) := l_cust_rec;
--CLASS CATEGORIES DATA (CLASS_CATEGORY_TBL_TYPE)
-- l_class_categories(1).class_category := 'Product'; --value from template
-- l_class_categories(1).class_code := 'Product 1';
--TASKS DATA
--Set the number of tasks for every level (there are 4 levels)
number_of_tasks1 := 1;
number_of_tasks2 := 2;
number_of_tasks3 := 0;
number_of_tasks4 := 0;
-- This is just a set of looping structures to create the tasks and sub-tasks
-- If it is difficult to understand, then feel free to create them individually.
a := 0;
for level1 in 1..number_of_tasks1 loop
a := a + 1;
l_tasks_in_rec.pm_task_reference := level1 || '.' || '0';
l_tasks_in_rec.task_name := 'Top Level ' || level1 || '.' || '0';
l_tasks_in_rec.pm_parent_task_reference := '';
l_tasks_in_rec.task_start_date := '01-JAN-2010';
l_tasks_in_rec.task_completion_date := '31-JAN-2010';
l_tasks_in_rec.actual_start_date := '01-JAN-2010';
l_tasks_in_rec.actual_finish_date :='31-JAN-2010';
l_tasks_in_rec.early_start_date := '01-JAN-2010';
l_tasks_in_rec.early_finish_date :='31-JAN-2010';
l_tasks_in_rec.late_start_date := '01-JAN-2010';
l_tasks_in_rec.late_finish_date :='31-JAN-2010';
l_tasks_in_rec.receive_project_invoice_flag := 'Y';
l_tasks_in(a) := l_tasks_in_rec;
parent_level1 := level1 || '.' || '0';
for level2 in 1..number_of_tasks2 loop
a := a + 1;
l_tasks_in_rec.pm_task_reference := level1 || '.' || level2;
l_tasks_in_rec.task_name := '2 Level ' || level1 || '.' || level2;
l_tasks_in_rec.pm_parent_task_reference := parent_level1;
l_tasks_in(a) := l_tasks_in_rec;
parent_level2 := level1 || '.' || level2;
end loop;
end loop;
--INIT_CREATE_PROJECT
pa_project_pub.init_project;
--CREATE_PROJECT
pa_project_pub.create_project(
l_api_version_number,
p_commit => l_commit,
p_init_msg_list => l_init_msg_list,
p_msg_count => l_msg_count,
p_msg_data => l_msg_data,
p_return_status => l_return_status,
p_workflow_started => l_workflow_started,
p_pm_product_code => l_pm_product_code,
p_project_in => l_project_in,
p_project_out => l_project_out,
p_key_members => l_key_members,
p_class_categories => l_class_categories,
p_tasks_in => l_tasks_in,
p_tasks_out => l_tasks_out,
p_customers_in => l_cust_tbl);
-- Check for errors
if l_return_status != 'S'
then
raise API_ERROR;
end if;
dbms_output.put_line('New Project Id: ' || l_project_out.pa_project_id);
dbms_output.put_line('New Project Number: ' || l_project_out.pa_project_number);
Commit;
--HANDLE EXCEPTIONS
-- Get the error message that were returned if it did not complete sucessfully
EXCEPTION
When API_ERROR then
if l_msg_count >= 1
then
for i in 1..l_msg_count loop
pa_interface_utils_pub.get_messages(
p_msg_data => l_msg_data,
p_encoded => 'F',
p_data => l_data,
p_msg_count => l_msg_count,
p_msg_index => l_msg_count, -- Added in 11i.PA.I
p_msg_index_out => l_msg_index_out);
dbms_output.put_line('error message: ' || l_data);
end loop;
rollback;
end if;
When OTHERS then
if l_msg_count >= 1
then
for i in 1..l_msg_count loop
pa_interface_utils_pub.get_messages(
p_msg_count => l_msg_count,
p_encoded => 'F',
p_msg_data => l_msg_data,
p_data => l_data,
p_msg_index => l_msg_count, -- Added in 11i.PA.I
p_msg_index_out => l_msg_index_out);
dbms_output.put_line('error message: ' || l_data);
end loop;
rollback;
end if;
END;
ERROR:=
initilaization
Assigning values
debug message -->: Start..
debug message -->: 1
debug message -->: 2
debug message -->: 3
debug message -->: 4
debug message -->: 5
debug message -->: 6
debug message -->: 7
debug message -->: 8
debug message -->: 9
debug message -->: 10
debug message -->: 11
debug message -->: 12
debug message -->: 13
debug message -->: 14
debug message -->: 15
debug message -->: 16
debug message -->: 17
debug message -->: 18
debug message -->: 19
debug message -->: 20
debug message -->: 21
debug message -->: 22
debug message -->: 23
debug message -->: 25
debug message -->: 26
debug message -->: 26-I
debug message -->: 26-II
debug message -->: 26-I
debug message -->: 26-II
debug message -->: 26-I
debug message -->: 26-II
debug message -->: 26-I
debug message -->: 26-II
debug message -->: 26-Vi
debug message -->: 26-I
debug message -->: 26-II
debug message -->: 26-VII
debug message -->: 27
debug message -->: 28
debug message -->: 30
error message: Project: 'TEST_VS_14052014'
The class category is invalid.Please see if (PA_PROJECT_PUB.create_project Errors - The Class Category Is Invalid (Doc ID 1323904.1)) helps.
Thanks,
Hussein -
How to create web site using STRUTS frame work
Hi,
I know how to create web pages using JSP & Servlets.But now i have to create Matrimonial web site using STRUTS frame work.Plz any one guide for me...
Thank U....Struts is not to be confused with JSF.
Start at their own homepage over there at apache.org.
Good luck. -
Good videos, websites, books, on creating web sites using full CS5?
Hi all, I just got CS5 (yeah!!!). I'd like to start creating web sites. I've used older versions of Dreamweaver to make simple sites. But I'd like to get a feel for the whole suite, to make full use of everything. Any pointers greatly appreciated!!
riverIf you're looking for book suggestions, I have a page on my website with my recommended reading list with links to the books on Amazon:
http://www.theindesignguy.com/indesign-book-recommendations.shtml
For videos, Lynda.com is a bargain at $25/month.
Bob -
Customer Id while creating project based on Template using create_project
Hello,
I am not able to pass customer id, on a template where there is no customer id is attached. It gives message customer id required. when I pass customer id along with bill to , ship to info, it gives message duplicate values.
I will appreciate if you clarify if I can pass customer id to the api pa_project_pub.create_project
Appreciate your help and time.
RegardsYes,you can pass the customer_id to create_project API by using the customer record type (apps.pa_project_pub.customer_tbl_type)
Look at that customer table type record information in standard API,we can pass the customer_id as an parameter .
Thanks, -
NAVS Tax price is not copied when creating a PO using template PO
Hello,
We have the following situation.
In our Pricing calculation schema we use condition NAVS for tax calculation.
Tax amount is entered automatically when we create a PO (based on condition records found)
However, when we create a PO, copying this existing PO, The NAVS tax returned is zero!
the following message appears in the price analysis:
"04 - 203 - Condition record was found and changed manually"
Via the button "Update" with option G "Copy pricing elements unchanged and redetermine taxes" we can retrieve again the tax price.
We would like to skip this manual procedure and have the system automatically copy the NAVS-taxprice.
How can we accomplish this?
thanks,
AartNot necesary anymore
-
How to create Test Form using TEMPLATE.fmb in APPS
Hi,
I need to create a Test Form (Extend oracle Forms) and deploy it in custom ASO_TOP.
When I opened TEMPLATE.fmb(AU_TOP) i received following error.
FRM-18108 Failed to load the following objects.
Source Module:APPSTAND
Source Object:Standard_PC_AND_VA
Source Module:APPSTAND
Source Object:Standard_Toolbar
Source Module:APPSTAND
Source Object:Standard_Calendar
How can I resolve this error and proceed forward.
Thanks,
MithunIt means that the Test form has a reference to those objects and it can't find them. You need to make those files (forms and/or libraries) available to Forms Builder.
-
CProjects 4.0 - Templates - Create Projects
Dear All, Is there a way I can restrict cProjects users to create projects only from Templates? Or have some stamp by which it can be made out that the project has or has not been created from one of the templates?
Hi,
That doesn't really answer my question. I am not exactly looking fior users' restriction. What I am looking for is, when a user (any user in the system having authorization to create projects) intends creating a project, is there a way by which the system can force him to use a template to create projects? So to say, a user should not be able to create project afresh - he should be able to create projects only using templates.
Or the other way could be (in case the first one doens't work out) - can there be some stamp in the project whcih will suggest that the project is / is not created from a template?
Thanks. -
Need solution to make changes in existing project sites in Project Server 2010 environment
Dear Folks,
Hope you all are doing good and ready to give a way for this requirement. :)
In project server 2010 environment, I am using InfoPath documents library, Issues, Risks etc in each and every project sites.
Say, after creation of 100 projects/project sites, I have got a requirement to make some changes in the InfoPath document library and in Issues, Risks list, so I have decided to use the following solution which is actually weird:
Make the changes in InfoPath document library, Issues/Risks list for 1 of the project site and save that site as template and associate it with running EPT.
Then, delete the existing project sites (after taking backup) and start recreating it from PWA/Server Settings/ Operational Policies/ Project Sites, so that it will take the latest template. But, seems like it is time taking and handy and actually it's not
working for some of the projects.
Request all of you to provide some solution for this.
Ask more, if my explanation is not clear.
Regards,
ShravanHello,
Regarding mass deleting and recreating Project Sites via the PSI, firstly delete the project sites then run the following PowerShell script to bulk create project sites:
https://gallery.technet.microsoft.com/Bulk-create-Server-Sites-784f7b29
I have got a script that bulk deletes projects but this is not published as this could be a dangerous script to run if you did know what to update etc. To give you an idea of how to delete project sites via the PSI see a code snippet below:
$EPMTYGUID = [system.guid]::empty
$projectOwnerID = 'd6a0a720-12ac-e211-93f9-00155d153dd4'
$ProjectList = $svcPSProxy.ReadProjectStatus("$EPMTYGUID","PublishedStore","", "0").Project | format-table proj_uid -hidetableheaders | out-string -stream
foreach ($projectUid in $projectList)
if ($projectUid -ne "")
$projectsforDeletions = $svcPSProxy.ReadProject($projectUid, "PublishedStore").Project | where {$_.projectOwnerID -eq $projectOwnerID} | format-table proj_uid -hidetableheaders | out-string -stream
foreach ($projUid in $projectsforDeletions)
if ($projUid -ne "")
$svcWSSProxy.DeleteWSSSite($projUid)
Write-host 'Project UID for deleted site' $projUID
That particular example deletes the project sites for a particular project owner, you could easily modify that to remove the project owner filter if needed.
Regarding your query about having to delete the project sites to get the changes to take affect, there is no easy option to get the issues and risks list changes to filter though, this would either be manual on each existing site or using code to iterate
through each existing site and apply the changes programmatically. Depending on if you used site collection content types to set up the Issues and Risks lists, it might be simple to add a new column etc. as you could do this centrally and it will cascade
down. If you didn't use content types and or its view changes etc. this is a per site change that can be manual or programmatically done. The same applies to the document library, if this was set up using a site collection content type, the changes can
be modified on the content type and cascaded down. If the library was set up with just a library that used local columns / templates then it will be a per site change - the same as the issues and risks.
The company I work for (CPS) does have a site sync tool that will programmatically update existing sites based on a specified site so I know it is all possible to do in code!
Paul
Paul Mather | Twitter |
http://pwmather.wordpress.com | CPS |
MVP -
I looked for this specific issue with Project Server 2010/PWA/SharePoint and could not find an exact answer... hopefully someone can help.
We are currently using Project Server 2010 and have a number of project site templates that are used dependent upon the enterprise project type selected. Each of these project site templates have unique permissions which should create the default security
groups on the project site upon publishing/syncing:
<Project Name> Members
<Project Name> Owners
<Project Name> Visitors
<Project Name> Project Managers (Project Web App Synchronized)
<Project Name> Team Members (Project Web App Synchronized)
Web Administrators (Project Web App Synchronized)
Whether a user creates a project through PWA or Project Pro 2010 and imports the project into PWA, we get a weird result in the Site Permissions of the newly created project site. PWA will remove all default security groups from the project site template
and add a whole list of users in the Site Permissions list without groups.
Once the project is published and the project site is created, we can then go back and add those default security groups back in the project Site Permissions and even add a couple of custom groups without them being removed on all subsequent project syncs
or publishing.
How do we get PWA to not overwrite the project site templates' security groups and place each user in the proper default security groups? At the same time, how is PWA adding a number of users into the Project Site Permissions?
Thanks in advance.Paul,
Thanks for that information. Right now we are using the Test environment to turn the Auto-sync feature back on. I suspect that the reason this is happening is due to PWA groups/categories/security templates. There may be more than one PWA group that is "overwriting"
the default project site groups upon initial creation of the project. We will look further into the security settings to tighten up the policies. -
Missing "Save Site as Template" For Publishing Sites in Project online 2013
First I created Sub site using Project Template under the site collection.
Now I want to this Sub site Save as a Site Template. When I went for Save site as Template in site setting. Under Site Action there is no option for “Save site as Template”
marylu"Publishing Feature" may be enabled at your site , The Publishing feature does not support the Save Site as Template option.
http://support.microsoft.com/kb/2492356
Some workaround -
http://www.learningsharepoint.com/2013/05/03/missing-save-site-as-template-for-publishing-sites-in-sharepoint-2013/
http://blogs.msdn.com/b/how24/archive/2013/06/13/save-publishing-site-as-a-template.aspx
Thanks
Ganesh Jat [My Blog |
LinkedIn | Twitter ]
Please click 'Mark As Answer' if a post solves your problem or 'Vote As Helpful' if it was useful.
Maybe you are looking for
-
LR6 freezing on full screen. Help please?
I have just got LR6 (WINDOWS 64x). When I use the Full Screen (or F key shortcut) I cannot exit the full screen without using Task Manager (Ctrl/Alt/Delete)and ending task (ie, LR). When I do this LR closes without saving, or having the option to sav
-
TNS listener error "ORA-12514: TNS:listener..."
Hi all, I have a problem with my listener on Oracle 11.2.0.2. I am more of a developer than a DBA, and I do not have a DBA to consult, so I hope you can address me, please. I have 2 DB instances running on the same machine ORCL and ORCL2 on port 1521
-
Exception in starting WLS_Portlet Server through console
Hi All I have been working on Oracle WebCenter v11.1.3.1 and have successfully installed Weblogic Server and Webcenter. When I try to restart the server I see all the instances except for WLS_Portlet instance. Below is the error log from nodemanager
-
Hi, In a point-to-multipoint bridge network (1 bridge as root the others as non-root) bandwidth is shared equally. Is there a way to let for instance one non-root bridge have 4 Mbps and the other non-root bridge 2 Mbps? Thanks, Joost Koopmans
-
Unauthorized user for purchased songs
After upgrading to itunes 7 and updating my software, I keep being told to "authorize" my previously purchased songs. When I enter in my user ID and password, I get the message that says it was successful, but then when I go to play, I get the same m