DCSIMG
Create Sharepoint Site By Template in Code - Workflow Custom Activity - Guy Burstein's Blog

Guy Burstein's Blog

Developer Evangelist @ Microsoft

News

Guy Burstein The Bu

Disclaimer
Postings are provided 'As Is' with no warranties and confer no rights.

Guy Burstein LinkedIn Profile

TwitterCounter for @bursteg

Create Sharepoint Site By Template in Code - Workflow Custom Activity

Create Sharepoint Site By Template in Code - Workflow Custom Activity

This post documents the steps I took in order to build a custom activity that creates a Sharepoint site by template. This post also talks about the steps needed in order to add this custom activity into the Sharepoint designer.

1. Create The Custom Activity

In Visual Studio 2005, I created a new Activity Library Project for my new activity. I created a new activity that derives from Activity (and not from the default SequentialActivity).

namespace Bursteg.CustomActivities

{

    public partial class CreateSiteFromTemplate : Activity

    {

        public CreateSiteFromTemplate()

        {

            InitializeComponent();

        }

 }

This custom activity creates the new site based on an input template name, and according to the value of a selected column in the item who triggered the workflow. To name this action I'd say: Creates a new site by template X, and calls it like the value of field Y.
In order for the activity to receive both values, 2 dependency properties should be created: SiteNameField and TemplateName, both of type string. (You can use the wdp code snippet in order to create them.)

public static DependencyProperty SiteNameFieldProperty = DependencyProperty.Register("SiteNameField", typeof(string), typeof(CreateSiteFromTemplate));

 

[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]

[ValidationOption(ValidationOption.Required)]

public string SiteNameField

{

    get return ((string)(base.GetValue(CreateSiteFromTemplate.SiteNameFieldProperty))); }

    set base.SetValue(CreateSiteFromTemplate.SiteNameFieldProperty, value); }

}

 

public static DependencyProperty TemplateNameProperty = DependencyProperty.Register("TemplateName", typeof(string), typeof(CreateSiteFromTemplate));

 

[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]

[ValidationOption(ValidationOption.Required)]

public string TemplateName

{

    get return ((string)(base.GetValue(CreateSiteFromTemplate.TemplateNameProperty))); }

    set base.SetValue(CreateSiteFromTemplate.TemplateNameProperty, value); }

}

Since the activity has to perform some actions on the list item that has triggered the workflow, get its values and etc., it must receive some additional properties that gives the context to the activity: __Context, __ListId and __ListItem:

public static DependencyProperty __ContextProperty = DependencyProperty.Register("__Context", typeof(WorkflowContext), typeof(CreateSiteFromTemplate));

 

[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]

[ValidationOption(ValidationOption.Required)]

public WorkflowContext __Context

{

    get return ((WorkflowContext)(base.GetValue(CreateSiteFromTemplate.__ContextProperty))); }

    set base.SetValue(CreateSiteFromTemplate.__ContextProperty, value); }

}

 

public static DependencyProperty __ListItemProperty = DependencyProperty.Register("__ListItem", typeof(int), typeof(CreateSiteFromTemplate));

 

[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]

[ValidationOption(ValidationOption.Required)]

public int __ListItem

{

    get return ((int)(base.GetValue(CreateSiteFromTemplate.__ListItemProperty))); }

    set base.SetValue(CreateSiteFromTemplate.__ListItemProperty, value); }

}

 

public static DependencyProperty __ListIdProperty = DependencyProperty.Register("__ListId", typeof(string), typeof(CreateSiteFromTemplate));

 

[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]

[ValidationOption(ValidationOption.Required)]

public string __ListId

{

    get return ((string)(base.GetValue(CreateSiteFromTemplate.__ListIdProperty))); }

    set base.SetValue(CreateSiteFromTemplate.__ListIdProperty, value); }

}

Notice that the __Context Property is of type WorkflowContext. This property is the most important for the implementation of this activity.

As for the implementation of the activity, we have to override the Execute method. In the following code I am using the WorkflowContext to get a reference to the list of custom templates in my site and creating the new site based on the input template. As for the name of the site, I am taking the value of the input field name for the current item. Notice the usage of all the input properties.

protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)

{

    // Get the list of custom templates in this site

    SPWebTemplateCollection templates = __Context.Site.GetCustomWebTemplates(1037);

 

    // Find the input template.

    SPWebTemplate template = templates[this.TemplateName];

 

    // Get the list in which this workflow was started

    SPList list = __Context.Web.Lists[new Guid(__ListId)];

 

    // Get the item that has triggered the workflow

    SPListItem item = list.Items[__ListItem - 1];

 

    // Get the value of the selected field

    string siteName = (string)item[this.SiteNameField];

 

    // Create the new site

    SPWeb newWeb = __Context.Web.Webs.Add(siteName, siteName, siteName, 1037, template, false, false);

 

    // This activity has finished its job.

    return ActivityExecutionStatus.Closed;

}

 

You can download a sample project with the custom activity I created.

2. Register the activity with Sharepoint

In order to use this custom activity in Sharepoint, the assembly must be signed and registered to the GAC. You should use a new or existing strong name key file and assign it the the custom activity project. (Simply go to the project properties, select the Signing pane and check the "Sign the assembly" checkbox.)
You can register the assembly to the GAC by dragging it from the bin\debug\ directory to the c:\windows\assembly directory or you can use the command line tool:

"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" -i  c:\....\bin\debug\MyAssembly.dll /f.

A better approach (which I took) is to use the command line tool in the post-build event of the project. Simply go to the project properties, select the Build Events pane, and use the following command:

"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" -i  $(TargetPath) /f.

In this way, after every build, the new assembly will be registered to the GAC.

Now that Sharepoint can use the assembly, you have to add its types as authorized types for Sharepiont. You can do that by editing the web.config of your site (For example: C:\Inetpub\wwwroot\wss\VirtualDirectories\8080\web.config). At the bottom of the file, locate the <System.Workflow.ComponentModel.WorkflowCompiler> tag and under the <authorizedTypes> add a new authorized type with the assembly details:

<System.Workflow.ComponentModel.WorkflowCompiler>

  <authorizedTypes>

    <authorizedType Assembly="Bursteg.CustomActivities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0a01dfd64655f7f6" Namespace="Bursteg.CustomActivities" TypeName="*" Authorized="True" />

  </authorizedTypes>

</System.Workflow.ComponentModel.WorkflowCompiler>

I used .Net Reflector in order to get the full assembly name including the version, culture and public key token.

3. Register the custom activity to Sharepoint Designer

Sharepoint Designer has a simple and easy-to-use user interface for creating workflows. It allows selecting actions from a list of available actions and supplying parameters. You can add the new activity to that list and make it just like any other out-of-the-box activities.

To do this, open the wss.actions file located in C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\1033\Workflow. Under the <WorkflowInfo> tag, locate the <Actions> tag and add a new action like the following:

<Action Name="Create Site by Template"

  ClassName="Bursteg.CustomActivities.CreateSiteFromTemplate"

  Assembly="Bursteg.CustomActivities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0a01dfd64655f7f6"

  AppliesTo="list"

  Category="Custom"

  UsesCurrentItem="true">

  <RuleDesigner Sentence="Create a new site called %1 by template %2">

    <FieldBind Field="SiteNameField" Text="Site Name Column" Id="1" DesignerType="writablefieldNames"/>

    <FieldBind Field="TemplateName" Text="Template Name" Id="2" DesignerType="TextArea"/>

  </RuleDesigner>

  <Parameters>

    <Parameter Name="__Context" Type="Microsoft.SharePoint.WorkflowActions.WorkflowContext, Microsoft.SharePoint.WorkflowActions" />

    <Parameter Name="__ListId" Type="System.String, mscorlib" Direction="In" />

    <Parameter Name="__ListItem" Type="System.Int32, mscorlib" Direction="In" />

    <Parameter Name="SiteNameField" Type="System.String, mscorlib" Direction="In" />

    <Parameter Name="TemplateName" Type="System.String, mscorlib" Direction="In" />

  </Parameters>

</Action>

There are few things you should notice about this action declaration. The action name will appear in the list of actions in the Sharepoint Designer. The AppliesTo = "list" and UsesCurrentItem="true" attributes will cause the workflow to pass the values of the list id and list item properties to the activity. The Sentence will appear in the design surface when you add the action, and the %1 and %2 will be replaced with the designers that match the FieldBinding tags by the Id attribute.

4. Testing the Custom Activity

Create Sharepoint Site By TemplateIn order to test this activity create a site and save it as a template. Create a new list with a column that will hold the name of the site to create. For example, you can have a list of courses in which the course code will be the site name.

In Sharepoint Designer create a new workflow, select the relevant list and select a start option (Start when item is created). In Step 2 of the designer, create a new step and add the Create Site by Template action from the Custom category. Choose the column from which to take the name of the site to create, and supply the name of the site template (should be something that ends with .stp).

Click Finish to apply the workflow to the site.

Now, go to the list and create a new item. The workflow should start and create the new site. You can find it the list of sites under your site collection.

I hope this tutorial helps, and I'd love to hear any feedback, comments and questions about it.

You can download a sample project with the custom activity I created.

Enjoy!

Comments

Rustam said:

Great post!

I need to create Site Directory containing metadata of different types (dates, owners as "people or group" etc) and since "Create New SharePoint Site" page (/_layouts/newsbweb.aspx) doesn't support this data types the only way is to create new item in Sites list and than create a site. As far as I understand with your code I can create a site automatically.

I have no experience with Visual Studio at all. Could you describe how to install you code on my Sharepoint server. Do I need Visual Studio for this ?

# July 16, 2007 6:10 PM

alex talarico said:

I was looking for this functionality on Designer but it is not offered out of box - so a quick search returned your page... I tried to implement your steps but when I open SP Designer and create a workflow, although your custom Activity shows up in the "Custom" category, it does not get added to the workflow when I selected - basically nothing happens when I select it...

I made sure in my version to change the locale ID to 1033 for the US - but still nothing. I havent played with it, but I was thinking we could make it more global by changing the hardcoded locale value to something like - SPContext.Current.Web.Locale.LCID ...

Any ideas on this? can you set up on a clean environment to reproduce what I describe here?

# July 26, 2007 6:49 PM

Guy Burstein said:

Hi

Did you make sure to add the namespace to the authorized list of types?

I have only a Hebrew installation, so I can't really check it on another environment. But, I'll take your advice about the constant LCID.

Guy

# July 26, 2007 7:01 PM

Derek Sanderson said:

There is a slight bug in that execution code that caused me tons of grief; the workflow just kept saying "An error has occurred in xxx"

// Get the item that has triggered the workflow

   SPListItem item = list.Items[__ListItem - 1];

this should be changed to

   SPListItem item = list.Items.GetItemById(__ListItem);

So, as I was following your instructions, I created a custom list. I populated a couple items, and then deleted the 2 list items. Then I created another item, and was initiating the workflow from that list item. The problem was that my list had exactly 1 entry in it, but its __ListItem was 3, because it was the 3rd item added to the list (it just so happened item 1 and 2 were deleted). Anyway, when it tried to access list.Items[2], there was no item at index 2 so an argument out of range exception was thrown.

Easy enough fix, use the GetItemById method

# July 28, 2007 1:23 AM

Guy Burstein said:

Thanks, I never really tested this scenario...

# July 28, 2007 11:03 AM

Guy Burstein's Blog said:

Over the past year I've written almost 300 posts, and recently I took the time to see which posts were

# July 29, 2007 9:35 PM

psepate said:

I am very interested in applying your solution. I have it installed and can activate the workflow. However, I get an error in the workflow and it does not complete. Any ideas on where to start?

Thanks for your help.

# August 17, 2007 3:28 AM

Guy Burstein said:

Hi

First I would go through the comments here. Other than that - can you debug the workflow?

Guy

# August 17, 2007 6:26 PM

Doug said:

Nice work!

Although I am having a problem with the "Template Name" selection, whatever I do in SPD I get an error in the workflow, most of the time what I select gets replaced with "*TemplateName*" - any ideas?

# August 24, 2007 3:11 PM

Guy Burstein said:

Hi

I also had troubles with the template name. As I recall, it should be the name of the .stp file you saved your template as.

Good luck

Guy

# August 24, 2007 5:19 PM

Doug said:

No worries,

I did not look at the locale - simply changed 1037 to 1033, rebuilt and voila!

Now all I need to do is to find a way to add a site owner to the newly created site through the worklfow - any ideas?

# August 28, 2007 2:52 PM

Guy Burstein said:

# October 1, 2007 9:24 AM

Chris Rivera said:

This is a fantastic post!  I followed the instructions and would get a very uninformative error when the workflow was kicked off.  To get rid of the error I changed 1037 to 1033 in two locations in your code, redeployed and then it worked like a charm.  I've pasted the lines I had to change below.  Perhaps this can be made more global as Alex Talarico suggests above. I also made the change suggested by Derek Sanderson above.

   // Get the list of custom templates in this site

   SPWebTemplateCollection templates = __Context.Site.GetCustomWebTemplates(1033);

   // Create the new site

   SPWeb newWeb = __Context.Web.Webs.Add(siteName, siteName, siteName, 1033, template, false, false);

# November 30, 2007 6:41 PM

Paul said:

Hi!

Thanks for this great activity!

But I also had troubles with the template name.

Can you describe more detailed how apply your activity?

# December 2, 2007 4:09 PM

Trevor said:

I wanted to modify this slightly so that I could keep the list where the workflow is attached in a different 'parent' site than where the new subsite would be created.  Here is how I did this:

I changed this line:

SPWeb newWeb = __Context.Web.Webs.Add(siteName, siteName, siteName, 1037, template, false, false);

To this: (I also needed 1033 instead of 1037)

SPWeb theParentWeb = null;

SPSite newSite = new SPSite("http://servername");

theParentWeb = newSite.OpenWeb("/siteDirectory");

theParentWeb.Webs.Add(siteName, siteName, siteName, 1033, template, false, false);

# December 17, 2007 2:13 AM

Ander said:

Hi, I have the same trouble than alex talarico (the second post) on the workflow activities list appears the new activity, but when I accept, it appears empty. So, do you have a solution for that?

Thanks.

# May 16, 2008 3:11 PM

jhOrxXSdgsRoq said:

cVCwsh

# May 18, 2008 3:01 AM

Fre said:

"Hi, I have the same trouble than alex talarico (the second post) on the workflow activities list appears the new activity, but when I accept, it appears empty. So, do you have a solution for that? "

Is there already a solution ??

Tnx

# May 20, 2008 1:23 PM

arni said:

i say one thing <a href=" groups.google.us/.../vid-upskirt-me ">wedding upskirt</a>  %-[[

# May 21, 2008 1:42 AM

james said:

good post man thx <a href=" groups.google.com/.../movie-upskirt-me ">downblouse upskirt</a>  mpxka

# May 21, 2008 1:42 AM

liza said:

good site dude <a href=" groups.google.us/.../ephedrine-ent ">vasopro ephedrine</a>  792206

# May 27, 2008 1:45 AM

Harrie Nak said:

Much appreciated post! When creating the workflow, do I need to fill in a condition as well, or just the action? Thanks.

# May 27, 2008 11:35 AM

jenna said:

hay <a href=" groups.google.us/.../flowjob-ias ">fresh teen sex clips</a>  :-[[[

# May 28, 2008 2:21 AM

john said:

bookmark you thx <a href=" groups.google.us/.../freeones-iax ">girlskissing</a>  %-P

# May 28, 2008 4:37 AM

bred said:

bookmark you thx <a href=" groups.google.us/.../nakes-iax ">camel toe</a>  321

# May 28, 2008 7:44 AM

bob said:

good site dude <a href=" groups.google.us/.../nakes-women-iax ">sexygirls</a>  8-D

# May 28, 2008 2:19 PM

kris said:

hello everybody! <a href=" groups.google.us/.../teeh-sex-iax ">virginspussy</a>  66905

# May 28, 2008 3:13 PM

arni said:

good post man thx <a href=" groups.google.us/.../tickets-int ">uk train tickets</a>  >:-DDD <a href=" groups.google.us/.../tickets-sol ">buy boston red sox tickets</a>  940788

# May 31, 2008 12:05 AM

sylvia said:

hello everybody! <a href=" groups.google.us/.../tickets-zak ">oklahoma state basketball tickets</a>  1630 <a href=" groups.google.us/.../tickets-zac ">planetickets</a>  %D <a href=" groups.google.us/.../tickets-wed ">cheap tickets broadway shows</a>  vjx

# May 31, 2008 12:28 AM

sylvia said:

sweet site thx <a href=" groups.google.us/.../tickets-sol ">nfl playoff tickets

</a>  8-))) <a href=" groups.google.us/.../tickets-sal ">ticketsnow

</a>  537013

# May 31, 2008 2:11 AM

lola said:

see this thanks <a href=" groups.google.us/.../tickets-ok ">comedy tickets</a>  muqsik <a href=" groups.google.us/.../tickets-fo ">tickets concerts</a>  ayyw

# May 31, 2008 4:37 AM

mona said:

please look at this <a href=" groups.google.us/.../tickets-oz ">free seawprld tickets san antonio

</a>  >:-OO

# May 31, 2008 11:41 AM

bred said:

great work man thx <a href=" http://us.cyworld.com/amayeta ">buy soma online</a>  8-))) <a href=" http://us.cyworld.com/amadahy ">order propecia</a>  zaq

# June 3, 2008 4:13 AM

mona said:

hello everybody! <a href=" http://us.cyworld.com/alaqua ">generic clonazepam</a>  ohb

# June 3, 2008 6:51 AM

kate said:

good work man <a href=" http://us.cyworld.com/amitola ">valium</a>  >:-( <a href=" http://us.cyworld.com/amisquew ">ultram pills</a>  809

# June 3, 2008 3:08 PM

joseph said:

please look at this <a href=" http://us.cyworld.com/alkas ">generic levitra</a>  >:-)))

# June 3, 2008 5:56 PM

joseph said:

please look at this <a href=" http://us.cyworld.com/alkas ">generic levitra</a>  >:-)))

# June 3, 2008 5:56 PM

pbaNnQYGyq said:

tickets_3.txt;2;2

# June 5, 2008 10:34 AM

ZgKtQZCZkEJeWYuNcDC said:

tickets_4.txt;2;2

# June 5, 2008 1:44 PM

DwyxLtZPHyElEDEfCx said:

tickets_5.txt;2;2

# June 5, 2008 5:00 PM

replica watches said:

# June 13, 2008 5:46 AM

nick said:

puS2pO hi!  hice site!

# July 27, 2008 1:29 PM

Pawan said:

How to copy a webSite from one Site to other

# August 5, 2008 8:53 AM

Eric VanRoy said:

because it is still useful. one note on the command:

"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" -i  $(TargetPath) /f.

If your targetpath has spaces (like... "document and settings"...), this will fail with a exit code of 1.

This should be:

"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" -i  "$(TargetPath)" /f.

Just in case someone else comes across the same issue.

# August 7, 2008 3:47 PM

Eric VanRoy said:

Ok, so now I am digging into this too much :)

Microsoft does not support modifications of the wss.actions file. the recommended approach is to create another file with the actions extension in the same directory. Unfortunately IISreset required, but all ACTIONS files get loaded, so I would almost think it is better to have a actions files for each custom action so that you can keep things more modular.

Reference...

msdn.microsoft.com/.../bb897644.aspx

# August 7, 2008 4:34 PM

Patrick said:

Hi i Tried to open the Project in VSTUDIO 2005 but get the error this project Type is not support by this installation please help ???

# September 11, 2008 10:11 AM

QPVOyOtuyyArygIhr said:

1XoZTI

# September 22, 2008 6:47 AM

sillesciluece said:

I just want to take some money! :)

<a href=gglkhnsjhs.com/>Press here</a>

# October 1, 2008 1:35 PM

Paul said:

Tried the process, made all the changes indicated above. Failed with Error in process.

Do you use site template name or STS#0, etc?

I could really use this if I can get it to work.

# October 14, 2008 5:49 PM

john2025 said:

XTxaZL hi webmastters

# October 23, 2008 2:32 AM

ishTrMEsojdklmuT said:

4SQYLz

# October 29, 2008 8:18 PM

NBKZ said:

Hi!

Thanks for this great activity!

Any sugestion how can i read in  history log if the site already existe, because the ativity only give am ERROR message

# November 3, 2008 11:55 AM

QkfxKvjxfb said:

BVOg3R

# November 3, 2008 9:09 PM

mebmasters said:

qL2JEI hi mebmasters

# November 10, 2008 4:53 PM

ThreeSome said:

Enjoyed your site very much! Thank you! Keep up a good work! :-))

# November 11, 2008 8:44 AM

JessicaLynn said:

I'll bookmark your site!  :-)) Keep up a good work! :-))

# November 12, 2008 9:55 PM

LesMontgomeery said:

Enjoyed your project very much. Thank you! Keep it up

<a href=oper656.journalspace.com/>***</a>

# November 22, 2008 5:22 PM

brietaErrorce said:

Hello.

Can anyone utter me how I would get a bother onto my mobby?

The directions is useless...

# December 2, 2008 2:09 AM

Personals_Women said:

I'll bookmark your site! 8-) Keep up a good job!

# December 20, 2008 8:37 AM

eIHLKHgZyQMRTAKRBc said:

hOabZ5

# December 20, 2008 8:40 AM

Older_Men_Personals said:

Keep it up.

# December 22, 2008 7:06 AM

Lonely_Housewives_Peronals said:

It is pretty! ;-)) Keep up your site!

# December 25, 2008 5:17 AM

Busty_Black_Babes said:

I love this post and the comparisons you have made.

# December 25, 2008 2:52 PM

Naked_Older_Women said:

I like this post and the comparisons you have made. Totally true and I guess some of this can be used in many applications in life!

# December 27, 2008 8:57 PM

Nude_Older_Women said:

I enjoyed this site. Totally awesome and I guess this can be very usefull in life!

# December 29, 2008 6:42 AM

IOsBgrzK said:

pcOhWM

# December 30, 2008 2:17 AM

Greg Naber said:

This is fantastic. I was able to create this workflow and get it working, even though I don't have much experience with visual studio. I do have another need if anyone can help.

This solution uses the site name from a field. I have the need to create sites with a Name from the list, but the url from another item on the same list.

For instance, the title of the site may be "Project Number - Project Description" but to keep the URL's short the URL would be \"Project Number". Both these fields are easily defined within the list, I would just need a way to pass this information to the workflow.

any help with this would be appreciated, and remember like I said, I have almost no knowledge of programming.. (I know I shouldn't be doing this at all, but tell the owners that.. besides, if they want to pay for my time to be stuck on this, then ok)

Thank you in advance,

Greg

# January 28, 2009 9:39 PM

Single_Man_Seeking_Woman said:

I love this post and the comparisons you have made are absolutly true.

# February 1, 2009 3:29 PM

Dating_Older_Man said:

I love the comparisons you have made. Absolutly true.

# February 2, 2009 11:22 AM

Dating_Divorced_Man said:

I like the comparisons you have made. Absolutly true.

# February 3, 2009 2:43 AM

klaus said:

nepHTy h1!  oxyumelno!

# February 4, 2009 2:29 AM

Purchase_Zagam said:

Purcshase Zagam

# February 4, 2009 3:30 AM

buy_Asendin said:

Purcshase, order, buy Asendin

# February 4, 2009 5:16 PM

DUoHGRJM said:

Hi! MFaJgCd

# February 28, 2009 12:28 AM

Lesbian_Dating said:

This one is a very reliable <a href=oper656.journalspace.com/>*** Dating</a> service.

# March 6, 2009 12:59 AM

Figure_Flattening_Garter_Belts said:

The Best Figure Flattening Garter Belts Online Available

# March 25, 2009 5:56 AM

inside particular era effect turn said:

governments 1800s pdf address albedo conclusions

# April 28, 2009 8:04 PM

Nimi Kaul said:

Hi,

Based on all the fixes, can you please post all the code, together for creating this workflow.

# May 19, 2009 11:19 AM

qbsarEzUcgzdNHcce said:

doors6.txt;5;5

# May 29, 2009 4:18 AM

BCAIJZRJ said:

doors6.txt;5;5

# May 29, 2009 4:19 AM

stabilized conclude fuels said:

review developers added substantial

# May 31, 2009 12:37 AM

area earth said:

risk scheme gps statement warmer australia

# June 3, 2009 9:30 AM

Marco said:

If I would like to run the code with RunWithElevatedPrivileges so that a power user does not need to have so many permissions, is this a good approach?

Thanks!

Marco

# June 3, 2009 3:32 PM

gas powered scooters said:

Help me to find gas powered scooters for sale

www.world66.com/.../gas_powered_scoote

# June 11, 2009 1:44 AM

gas powered scooters said:

Help me to find rock gas powered scooters

www.world66.com/.../gas_powered_scoote

# June 11, 2009 4:29 AM

name said:

I have the same.,

# June 14, 2009 11:47 PM

yields gross half developer said:

contribution thus android allowed precipitation glacial provisions

# July 3, 2009 10:51 PM

samuel said:

2wfrR2 odfBxZakGhH3v96M2Qsk

# July 22, 2009 11:37 PM

online pharmacy no prescription needed said:

I want to agree with everybody! Just GREAT!!!

# July 31, 2009 5:22 AM

my great discovery said:

SharePoint Custom Workflow to create a site

# May 28, 2010 6:00 PM
Leave a Comment

(required) 

(required) 

(optional)

(required) 


Enter the numbers above: