If you’ve ever been involved in a content type redesign, you’ll know how much of a pain it can be to add new site content types on a large number of existing lists, as well as removing those content types no longer needed. To try and ease the pain, in this article I have provided some example scripts on how to bulk add and remove site content types from lists using PowerShell.
Note that the scripts do not create the site content types for you – they assume that the content types are already created in the root site of the site collection containing the lists to be modified.
I have provided scripts based on a couple of scenarios:
1) Checking each site in a site collection and changing content types associated on lists with the same name – e.g., add or remove a specific content type from all document libraries called “Shared Documents”
2) Checking each site in a site collection and changing content types based on the content types already associated on lists – e.g., add or remove a content type from any document library which currently includes the “Sales Document” content type
Adding content types to lists
The first content type adding script performs these tasks:
- Sets up variables for connecting to the site collection and specifying the name of the document library to examine in each site
- Uses a piped command to walk through each site in the site collection and:
- Attach to the document library specified in the $lookForList variable (“Shared Documents” in the example script below)
- Enable the “Allow management of content types” option on the list (you can remove this option if already set on the document library)
- Add the “Sales Document” and “IT Document” content types to the document library
- Output progress to the console for reference
- Dispose of the site object to free up server resources
#Get site object and specify name of the library to look for in each site
$site = Get-SPSite http://portal
$lookForList = "Shared Documents"#Walk through each site and change content types on the list specified
$site | Get-SPWeb -Limit all | ForEach-Object {
write-host "Checking site:"$_.Title
#Make sure content types are allowed on the list specified
$docLibrary = $_.Lists[$lookForList]
if ($docLibrary -ne $null)
{
$docLibrary.ContentTypesEnabled = $true
$docLibrary.Update()
#Add site content types to the list
$ctToAdd = $site.RootWeb.ContentTypes["Sales Document"]
$ct = $docLibrary.ContentTypes.Add($ctToAdd)
write-host "Content type" $ct.Name "added to list" $docLibrary.Title
$ctToAdd = $site.RootWeb.ContentTypes["IT Document"]
$ct = $docLibrary.ContentTypes.Add($ctToAdd)
write-host "Content type" $ct.Name "added to list" $docLibrary.Title
$docLibrary.Update()
}
else
{
write-host "The list" $lookForList "does not exist in site" $_.Title
}
}
#Dispose of the site object
$site.Dispose()
An example from the output of this script is shown below:
The second content type adding script performs the following tasks:
- Sets up variables for connecting to the site collection and specifying the name of the content type to examine on all document libraries in each site
- Uses a piped command to walk through each site in the site collection and:
- Get each document library in the site and check if a content type exists with the name specified for the $lookForCT variable (“Sales Document” in the example script below)
- If the $lookForCT content type exists on the library, add the “HR Document” and “IT Document” content types to the document library
- Output progress to the console for reference
- Dispose of the site object to free up server resources
#Get site object and
#specify name of the content type to look for in each library
$site = Get-SPSite http://portal
$lookForCT = "Sales Document"#Walk through each site in the site collection
$site | Get-SPWeb -Limit all | ForEach-Object {
write-host "Checking site:"$_.Title
#Go through each document library in the site
$_.Lists | where { $_.BaseTemplate -eq "DocumentLibrary" } | ForEach-Object {
write-host "Checking list:"$_.Title
#Check to see if the library contains the content type specified
#at the start of the script
if (($_.ContentTypes | where { $_.Name -eq $lookForCT }) -eq $null)
{
write-host "No content type exists with the name" $lookForCT "on list" $_.Title
}
else
{
#Add site content types to the list
$ctToAdd = $site.RootWeb.ContentTypes["HR Document"]
$ct = $_.ContentTypes.Add($ctToAdd)
write-host "Content type" $ct.Name "added to list" $_.Title
$ctToAdd = $site.RootWeb.ContentTypes["IT Document"]
$ct = $_.ContentTypes.Add($ctToAdd)
write-host "Content type" $ct.Name "added to list" $_.Title
$_.Update()
}
}
}
#Dispose of the site object
$site.Dispose()
An example of the output from the script is shown below:
Removing content types from lists
The first content type removal script performs these tasks:
- Sets up variables for connecting to the site collection and specifying the name of the document library to examine in each site
- Uses a piped command to walk through each site in the site collection and:
- Attach to the document library specified in the $lookForList variable (“Shared Documents” in the example script below)
- Remove the “Sales Document” and “IT Document” content types from the document library
- Output progress to the console for reference
- Dispose of the site object to free up server resources
#Get site object and specify name of the library to look for in each site
$site = Get-SPSite http://portal
$lookForList = "Shared Documents”#Walk through each site and change content types on the list specified
$site | Get-SPWeb -Limit all | ForEach-Object {
write-host "Checking site:"$_.Title
#Check list exists
$docLibrary = $_.Lists[$lookForList]
#Remove unwanted content types from the list
if($docLibrary -ne $null)
{
$ctToRemove = $docLibrary.ContentTypes["IT Document"]
write-host "Removing content type" $ctToRemove.Name "from list" $docLibrary.Title
$docLibrary.ContentTypes.Delete($ctToRemove.Id)
$docLibrary.Update()
}
else
{
write-host "The list" $lookForList "does not exist in site" $_.Title
}
}
#Dispose of the site object
$site.Dispose()
An example of the output from the script is shown below:
Finally, the second content type removal script performs the following tasks:
- Sets up variables for connecting to the site collection and specifying the name of the content type to examine on all document libraries in each site
- Uses a piped command to walk through each site in the site collection and:
- Get each document library in the site and check if a content type exists with the name specified for the $lookForCT variable (“Sales Document” in the example script below)
- If the $lookForCT content type exists on the document library (“Sales Document” in the example script below), remove it
- Output progress to the console for reference
- Dispose of the site object to free up server resources
#Get site object and
#specify name of the content type to look for in each library
$site = Get-SPSite http://portal
$lookForCT = "Sales Document"#Walk through each site in the site collection
$site | Get-SPWeb -Limit all | ForEach-Object {
write-host "Checking site:"$_.Title
#Go through each document library in the site
$_.Lists | where { $_.BaseTemplate -eq "DocumentLibrary" } | ForEach-Object {
write-host "Checking list:"$_.Title
#Check to see if the library contains the content type specified
#at the start of the script
if (($_.ContentTypes | where { $_.Name -eq $lookForCT }) -eq $null)
{
write-host "No content type exists with the name" $lookForCT "on list" $_.Title
}
else
{
#Remove content types from list
$ctToRemove = $_.ContentTypes[$lookForCT]
write-host "Removing content type" $ctToRemove.Name "from list" $_.Title
$_.ContentTypes.Delete($ctToRemove.Id)
$_.Update()
}
}
}
#Dispose of the site object
$site.Dispose()
An example of the output from the script is shown below:
Note that a content type cannot be removed from a list if there are items currently using it in that list. Therefore, before you can attempt to remove a list content type, you must make sure that any items associated with it have either been assigned a different content type (see this article for details on how to do this) or deleted from the list completely.
Even after you think that all list items have been reassigned new content types or deleted, there still may be reasons you get the dreaded “Content type is still in use” message when trying to remove the content type. This is usually because there are still items present in the list that you are not able to see in standard list views. Here are a few tips to troubleshoot the message if you are still getting it:
- Go to the document library showing the error, click Library Settings from the Library tab on the ribbon interface and then select Manage files which have no checked in version. You can use this administration page to take ownership of files created or uploaded by users but not checked in yet, and therefore invisible in list views. Once you have taken ownership, you can check them in and reassign the content types set on them
- Check the recycle bin and delete files using the content type you wish to remove from the list
- Remove any old versions of a document which may have used the content type you wish to remove from the list
Hi Phil,
ReplyDeleteThis Powershell script is amazing, just what I needed. Do you know if it is possible to control the visibility of the Content Types when you add them.
Peter
Control visibility in what sense?
ReplyDeleteIn a document library under content types, there is the option to "Change new button order and default content type". I was wondering if your script could be modified to set whether the Content Type was Visible or Not on the New Button.
ReplyDeleteHi Phil,
ReplyDeleteCan you please drop a note on how I can remove the defaul blog which appears when I add Out of box Recent Blog Posts from mysite
Thanks
Hi Phil,
ReplyDeleteTo be more clear..
I have created one blog site in SharePoint 2010 MySite. When I am going into blog site there is one default Post will be available like "Welcome to your blog." I want to delete this default blog post "Welcome to your blog." with the help of PowerShell script.
"Anonymous" - You can certainly do it in PowerShell by walking through the blog site of each My Site, attaching to the posts library and deleting the aspx file in question - I have no time to do it for you I'm afraid. Sorry.
ReplyDeleteThanks Phil. I was able to do it in c#. I will later do it in ps.
ReplyDeleteHi Phil
ReplyDeleteI tested the code for adding content type, I am getting following error, please let me know what I am missing
Exception calling "Add" with "1" argument(s): "Object reference not set to an instance of an object."
At C:\script\Add-SPSiteContentType1.ps1:21 char:43
+ $ct = $docLibrary.ContentTypes.Add <<<< ($ctToAdd)
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
Hello
ReplyDeleteI used remove script for deleting content type from the list and its working fine. Now my problem is that content type also has associated 4 different type columns, they are not deleting automatically from the list, they are still exist as a individial column.
Let me how can I do this
Regards
Avian
20160301meiqing
ReplyDeletereplica watches for sale
jordan shoes
coach factory
hollister outlet
ed hardy clothing
louis vuitton outlet
toms
oakley sunglasses
hollister outlet
jordan concords
pandora jewelry
the north face outlet
ugg boots
michael kors outlet
abercrombie and fitch
celine bags
ugg boots
louis vuitton handbags
jordans
abercrombie kids
abercrombie
louis vuitton outlet
lebron james shoes
louis vuitton handbags
louis vuitton handbags
cheap jordans
instyler curling iron
jordans for sale
michael kors outlet online
rolex watches outlet
michael kors outlet
canada goose
coach outlet online
christian louboutin outlet
hollister clothing
mulberry handbags
cheap oakleys
coach outlet
pandora jewelry
jianbin0309
ReplyDeletetrue religion jeans outlet
celine outlet
louis vuitton handbags outlet
air jordan shoes for sale
asics,asics israel,asics shoes,asics running shoes,asics israel,asics gel,asics running,asics gel nimbus,asics gel kayano
tiffany outlet
swarovski crystal
michael kors outlet store
michael kors clearance
hermes bags
ray ban sunglasses
marc jacobs
valentino outlet
swarovski crystal
mac cosmetics
cheap nba jerseys
ray ban sunglasses
louis vuitton handbags outlet
ray-ban sunglasses
michael kors outlet store
michael kors outlet online
swarovski outlet
chicago blackhawks
true religion canada
michael kors outlet
ed hardy clothing
longchamp handbags outlet
prada outlet
ralph lauren shirts
michael kors factory store
cheap nfl jersey
rolex watches for sale
cheap nike shoes
mbt shoes outlet
20160530meiqing
ReplyDeleteconverse sneakers
ralph lauren outlet
coach outlet
coach factory outlet
ugg boots
prada sunglasses
birkenstock sandals
oakley sunglasses
polo ralph lauren
louis vuitton handbags
mizuno running shoes
pandora jewelry
air force 1
toms
louboutin pas cher
air max 90
cheap jordans
yeezy boost 350 balck
nike air force 1
burberry outlet
yeezy boost 350
reebok uk
nike air force 1
christian louboutin outlet
michael kors outlet clearance
chaussure louboutin
cheap jordan shoes
michael kors outlet
buy red bottoms
michael kors outlet
jordan shoes
tiffany and co jewelry
nike air max shoes
rolex watches
ralph lauren uk
fitflops sale clearance
Cheap Lebron Shoes,Cheap Lebron 13 Sale,Air Max 2016 Sale,Cheap Air Max 2015 shoes are launched with new style and top quality.Cheap Air Max 2016 Shoes have become the most popular of Sport shoes.It Absolutely the best Christmas gift to her favorite things.
ReplyDelete[url=http://www.cheaplebron13sale.com]Nike Air Max 2016[/url]
[url=http://www.cheaplebron13sale.com]Nike Air Max 2015[/url]
[url=http://www.cheaplebron13sale.com]Nike Air Max 2014[/url]
[url=http://www.cheaplebron13sale.com]Nike Air Max 2013[/url]
[url=http://www.cheaplebron13sale.com]Nike Air Max 95[/url]
[url=http://www.cheaplebron13sale.com]Nike Air Max 90[/url]
[url=http://www.cheaplebron13sale.com]Nike Air Max Thea[/url]
[url=http://www.cheaplebron13sale.com]Nike Air Max Motion[/url]
[url=http://www.cheaplebron13sale.com]Nike Air Max Tailwind 7[/url]
[url=http://www.cheaplebron13sale.com]Nike Flyknit Air Max[/url]
[url=http://www.cheaplebron13sale.com]Cheap LeBron 13[/url]
[url=http://www.cheaplebron13sale.com]Cheap LeBron 12[/url]
[url=http://www.cheaplebron13sale.com]Cheap Kobe 11[/url]
[url=http://www.cheaplebron13sale.com]Cheap Kobe 10[/url]
[url=http://www.cheaplebron13sale.com]Cheap Kobe 9[/url]
[url=http://www.cheaplebron13sale.com]Cheap Jordan 5[/url]
[url=http://www.cheaplebron13sale.com]Cheap Jordan 11[/url]
[url=http://www.cheaplebron13sale.com]Cheap Jordan 13[/url]
[url=http://www.cheaplebron13sale.com]Cheap Nike Free 5.0[/url]
[url=http://www.cheaplebron13sale.com]Nike Free 5.0[/url]
jimmy choo outlet store
ReplyDeletenorth face uk
louis vuitton outlet online
fitflops
adidas nmd uk
lebron james shoes 2016
nike air force black
ugg outlet
oakley sunglasses wholesale
birkenstocks
michael kors outlet
polo ralph lauren outlet online
uggs canada
michael kors outlet online
coach factory outlet online
omega replica watches
ralph lauren uk
uggs canada
longchamp bag
ghd
adidas gazelle
jimmy choo
louboutin shoes
cheap nfl jerseys
cheap ray ban sunglasses
moncler outlet online
abercrombie kids
adidas superstars
mont blanc pens outlet
coach factory outlet online
cheap nfl jerseys
cartier love ring
yeezy boost 350 balck
20160721caiyan
christian louboutin sale
ReplyDeletecoach factory outlet
michael kors outlet
louis vuitton bags
louis vuitton outlet
toms
coach outlet store online
adidas shoes
ray ban sunglasses uk
oakley sunglasses
coach outlet
louis vuitton handbags
abercrombie kids
michael kors purses
coach outlet
coach outlet
louis vuitton outlet
michael kors purses
coach factory outlet
adidas uk
lebron james shoes 12
coach factory outlet
coach outlet online
louis vuitton handbags
ray ban sunglasses
celine
polo ralph lauren
kate spade outlet
michael kors handbags
michael kors
lebron james shoes
louis vuitton handbags
louis vuitton bags
christian louboutin outlet
cheap oakley sunglasses
mont blanc pens
adidas outlet store
nike nfl jerseys
ralph lauren outlet
beats headphones
20168.8wengdongdong
nike roshe run femme
ReplyDeletechristian louboutin sale
louis vuitton outlet online
uggs outlet
louboutin shoes
michael kors outlet online
stivali ugg
coach outlet
gucci outlet online
ugg slippers
20169.27chenjinyan
ugg boots
ReplyDeletecoach outlet
fitflops sale
celine outlet
beats by dr dre
jordan shoes
nike trainers
michael kors handbags
nike free run
chrome hearts
chanyuan1011
coach factory outlet
ReplyDeleteair max uk
adidas outlet store
ray ban sunglasses
north face outlet
ugg uk
cheap ugg boots
cheap nba jerseys
hermes scarf
clippers jerseys
2016.11.26xukaimin
hxy2.14
ReplyDeletetiffany jewellery
tiffany outlet
tiffany and co jewelry
tiffany and co
tiffany and co
tiffany jewellery
timberland boots
timberland shoes
tods outlet online
tods outlet
kacang kapri tari bali
ReplyDeletekacang cap tari bali
kacang tari khas bali
kacang tari bali
jual kacang tari
jual kacang cap tari
harga kacang tari
produsen kacang tari
distributor kacang tari
Volume shipments of the new Hot Nike Free 4.0/5.0,Nike free run 2/3/5.0 plus on our store.
ReplyDeleteSpecial nike free 5.0 plus,nike free 5.0 v4 with nike free 4.0 v3 is particular shoes for running,
best choice for your run.
http://okcheapshoes.com/products/?Nike-Free-5.0-V2-c2_p1.html Nike Free 5.0
http://okcheapshoes.com/products/?Nike-Free-5.0-2015-c61_p1.html Nike Free 5.0 2015
http://okcheapshoes.com/products/?Nike-Air-Max-95-c41_p1.html Air Max 95
http://okcheapshoes.com/products/?Nike-Air-Max-2016-c63_p1.html Cheap Air Max 2016
http://okcheapshoes.com/products/?Nike-Air-Max-2015-c62_p1.html Cheap Air Max 2015
http://okcheapshoes.com/products/?Cheap-Jordan-11-c12_p1.html Cheap Jordan 11
http://okcheapshoes.com/products/?Nike-Kobe-11-c65_p1.html Cheap Kobe 11
Volume shipments of the new Hot Nike Free 4.0/5.0,Nike free run 2/3/5.0 plus on our store.
ReplyDeleteSpecial nike free 5.0 plus,nike free 5.0 v4 with nike free 4.0 v3 is particular shoes for running,
best choice for your run.
http://okcheapshoes.com/products/?Nike-Free-5.0-V2-c2_p1.html Nike Free 5.0
http://okcheapshoes.com/products/?Nike-Free-5.0-2015-c61_p1.html Nike Free 5.0 2015
http://okcheapshoes.com/products/?Nike-Air-Max-95-c41_p1.html Air Max 95
http://okcheapshoes.com/products/?Nike-Air-Max-2016-c63_p1.html Cheap Air Max 2016
http://okcheapshoes.com/products/?Nike-Air-Max-2015-c62_p1.html Cheap Air Max 2015
http://okcheapshoes.com/products/?Cheap-Jordan-11-c12_p1.html Cheap Jordan 11
http://okcheapshoes.com/products/?Nike-Kobe-11-c65_p1.html Cheap Kobe 11
The Article is very interesting and I like it. Harga Fiforlif di Surabaya kota , Jual Fiforlif di Surabaya kota , Agen fiforlif di Surabaya kota , Manfaat Fiforlif , Distributor Fiforlif di Surabaya kota
ReplyDeletelouis vuitton outlet
ReplyDeletemcm bags
beats by dre
louis vuitton
michael kors handbags
toms shoes
louis vuitton handbags
louis vuitton outlet
michael kors outlet
polo ralph lauren
20173.9chenjinyan
The Article is very interesting and I like it. Harga Fiforlif di Semarang , Jual Fiforlif di Semarang , Agen fiforlif di Semarang , Manfaat Fiforlif , Distributor Fiforlif di Semarang
ReplyDeleteswarovski crystal
ReplyDeleterolex watches
nike store uk
louis vuitton outlet
coach factory outlet
burberry outlet
rolex watches
oakley sunglasses
coach outlet online
cheap jordans
20170323lck
coach outlet online
ReplyDeletechristian louboutin pas cher
polo ralph lauren outlet
ralph lauren sale clearance uk
nfl jerseys cheap
michael kors outlet canada
pandora charms
fitflop shoes
coach outlet online
nfl jerseys wholesale
0324shizhong
Coach Outlet ED Hardy Outlet Coach Outlet Store Online Kate Spade Outlet Cheap Jordans Coach Purses Coach Outlet Kate Spade Outlet Toms Outlet Louis Vuitton
ReplyDeletegiuseppe zanotti outlet
ReplyDeleteralph lauren polo
oakley sunglasses wholesale
ralph lauren outlet
ray ban sunglasses outlet
valentino outlet
coach outlet
wanglili21070524
coach outlet online
ReplyDeletecoach handbags outlet
prada sunglasses for women
nba jerseys wholesale
michael kors outlet online
mulberry outlet
louis vuitton handbags
oakley sunglasses
cheap football shirts
fitflops uk
chanyuan2017.06.08
Nice Information, thank you for sharing this knowledge
ReplyDeleteDownload aplikasi digital info pendidikan informasi beasiswa s2 jadwal pendaftaran sbmptn game tebak gambar android akreditasi universitas terbuka informasi pendaftaran kuliah
NIKE FREE series launched in 2005, although other continuous collocation technology,
ReplyDeletecreate more suitable for running shoes,NIKE FREE series is divided into 3.0, 4.0, 5.0,Three kinds of shoes,
3.0,4.0,5.0,Digital represents Nike Free sole level,
The smaller the number closer to barefoot wearing feeling and outsole is more convenient and flexible,
the larger the number represents the stronger support.
http://nikefreeruns.biz/products/?Nike-Air-Max-98-c109_p1.html Cheap air max 98
http://nikefreeruns.biz/products/?Nike-Air-Max-2018-c108_p1.html Cheap air max 2018
http://nikefreeruns.biz/products/?Nike-Kobe-12-c88_p1.html Cheap kobe 12
http://nikefreeruns.biz/products/?Nike-Kobe-11-c86_p1.html Cheap kobe 11
http://nikefreeruns.biz/products/?Nike-Kobe-AD-c93_p1.html Cheap kobe ad
http://nikefreeruns.biz/products/?Nike-Free-5.0-V2-c78_p1.html Cheap nike free 5.0
http://nikefreeruns.biz/products/?Nike-Air-Max-2017-c68_p1.html Cheap air max 2017
http://nikefreeruns.biz/products/?Nike-Lebron-13-c98_p1.html Cheap lebron 13
افضل شركة ترميمات بالرياض
ReplyDeleteارخص شركة دهانات بالرياض
شركة شفط بيارات بالرياض
شركة جلي بلاط ببريدة
شركة تنظيف كنب ببريدة
شركة مكافحة النمل الابيص ببريدة
شركة تنظيف كنب بعنيزة
شركة كشف تسربات المياة بعنيزة
شركة مكافحة النمل الابيض بعنيزة
شركة تنظيف مجالس ببريدة
Coach Outlet ED Hardy Outlet Coach Outlet Store Online Kate Spade Outlet Cheap Jordans Coach Purses Coach Outlet Kate Spade Outlet Toms Outlet Louis Vuitton
ReplyDelete
ReplyDeleteشركات الشحن جده مصر
شركات الشحن بجده لمصر
شركات الشحن مكه مصر
شركات الشحن جده لمصر
شركات الشحن مكه لمصر
شركة شحن بجده لمصر
شركات الشحن الرياض مصر
شركة شحن الرياض مصر
شركات الشحن
شركات الشحن الدولي
شركات شحن من الرياض لمصر
شركات الشحن الدولي
شركات شحن من الرياض لمصر
اسعار شركات الشحن
افضل شركة شحن
ارخص شركة شحن
شركات شحن لمصر بالرياض
شركات شحن بالرياض
شحن لمصر من الباب للباب
مكتب شحن لمصر
شحن لمصر
اسعار الشحن لمصر
1、
ReplyDeletecheap jordan shoes
golden goose sneakers
golden goose
fitflops clearance
coach outlet
basketball shoes
cheap jordans
reebok outlet store
cheap basketball shoes
cheap air jordans
Good article, thanks for sharing
ReplyDeleteObat Untuk Mengatasi Ruam Di Kulit
Pengobatan Atasi Radang Pita Suara (Laringitis)
Pengobatan Untuk Mengatasi Difteri
Obat Untuk Menghilangkan Benjolan Di Leher
Pengobatan Atasi Fibrosis Paru
https://myserviceshome.com/water-insulation-in-riyadh/
ReplyDeletehttps://myserviceshome.com/detect-water-leakage-in-riyadh/
https://myserviceshome.com/ways-to-clean-houses-in-riyadh/
https://myserviceshome.com/ways-of-moving-furniture-in-riyadh/
https://myserviceshome.com/steam-cleaning-in-jeddah/
This is an awesome rousing article.I am practically satisfied with your great work.You put truly exceptionally supportive data. Keep it up. Continue blogging. Hoping to perusing your next post. best backlinks
ReplyDeletecheap nfl jerseys
ReplyDeletecheap jerseys
cheap jerseys from china
wholesale jerseys
cheap nfl jerseys from china
china jerseys
nfl jerseys china
wholesale nfl jerseys
cheap authentic nfl jerseys
cheap jerseys online
cheap authentic jerseys
cheap sports jerseys
cheap wholesale jerseys
china wholesale jerseys
discount nfl jerseys
cheap authentic jerseys from china
discount jerseys
custom cowboys jersey
nfl jerseys cheap
cheap nfl jerseys china
authentic nfl jerseys
Thanks for provide great informatic and looking beautiful blog, really nice required information & the things i never imagined and i would request, wright more blog and blog post like that for us. Thanks you once agian
ReplyDeleteBirth certificate in delhi
Birth certificate in ghaziabad
Birth certificate in gurgaon
Birth certificate in noida
How to get birth certificate in ghaziabad
how to get birth certificate in delhi
birth certificate agent in delhi
how to download birth certificate
birth certificate in greater noida
birth certificate agent in delhi
Birth certificate delhi