Artykuły

A A A
Drukuj Ekportuj do PDF
Opublikowane: 2011.09.12 12:00 | Paweł Wróbel | Aktualizacja: 2011.10.02 0:42

SharePoint 2010 - Funkcje witryny, a tworzenie witryny na podstawie szablonu z innego środowiska

W jaki sposób przyspieszyć włączanie funkcji witryny SharePoint po otrzymaniu błędow o brakujących funkcjach podczas tworzenia witryny z szablonu.

Od czasu do czasu (zwłaszcza kiedy pracujemy jako support SharePointa) potrzebujemy na podstawie szablonu witryny stworzyć nową witrynę. Jest to przydatne zwłaszcza, kiedy zrobimy jakieś rozwiązanie i chcemy je przenieść do klienta albo kiedy klient ma problem i chce nam przesłać swoje rozwiązanie do debugowania. Samo przenoszenie jest proste, możemy jednak przy tworzeniu witryny dostać uciążliwy do zwalczenia błąd spowodowany brakiem funkcji na witrynie. Dotyczy to zarówno pełnego SharePoint Serwera jaki i SharePoint Foundation.

Żeby przenieść witrynę w szablonie wchodzimy w ustawienia witryny, w grupie "Akcje witryny" wybieramy "Zapisywanie witryny jako szablonu" (zaznaczając lub nie opcję zapisywania zawartości, co ma wpływ na to czy przeniosą się nam również wpisy na listach i biblioteki w dokumentach, ale również i przepływy) i po pomyślnym zapisaniu witryny przechodzimy do galerii rozwiązań za pomocą miłego linka ("galeria rozwiązań") dostarczonego przez twórców SP. Z galerii zapisujemy sobie nasz plik WSP (warto pamiętać, pod jaką nazwą go zapisujemy, zwłaszcza jak to robimy po raz 10 danego dnia) na dysku.
Następnie przechodzimy na środowisko docelowe - na główną witrynę kolekcji witryn (a nie np. podwitrynę pod którą chcemy stworzyć witrynę). Tam ponownie wchodzimy na ustawienia witryny i w grupie "Galerie" wybieramy "Rozwiązania" (niezbyt oczywiste miejsce do szukania szablonów witryn dla osób przechodzących z SP2007). Teraz musimy zrobić następujące kroki:

  • Klikamy na zakładkę "Rozwiązania" (mimo iż wygląda jakby była już wybrana)
  • Klikamy "Przekaż rozwiązanie"
  • Wgrywamy plik WSP, który zapisaliśmy uprzednio na dysku
  • Aktywujemy rozwiązanie

Teraz możemy stworzyć nową witrynę na podstawie wgranego szablonu. Wchodzimy na witrynę pod którą chcemy stworzyć nową witrynę i wybieramy z akcji witryny (menu w górnym lewym rogu) "Utwórz witrynę". W menu po lewej wybieramy kategorię "Puste i niestandardowe", wybieramy nasz szablon, wpisujemy tytuł i URL i klikamy "Utwórz".

I tu dochodzimy do "klu programu": jeżeli na środowisku były zainstalowane/włączone funkcje, które były włączone na środowisku źródłowym, które nie są dostępne na docelowym to dostaniemy piękny błąd "Szablon witryny wymaga aktywowania funkcji {długi GUID} w zbiorze witryn. Identyfikator korelacji: {kolejny GUID}" (ang: :The site template requires that the Feature {GUID} be installed in the farm or site collection. Corelation ID: {GUID}"). Rozwiązaniem tego błędu jest zainstalowanie/włączenie brakującej funkcji. Problem polega na tym, że mamy piękny GUID, który nam nie mówi którą funkcję powinniśmy włączyć. Możemy oczywiście otworzyć stronę zarządzania funkcjami na witrynie źródłowej i docelowej i posprawdzać, które funkcje były włączone na źródle i włączyć je na witrynie docelowej. Jeżeli jednak mamy dużo funkcji to może to być trudne i czasochłonne, ponadto czasami nie mamy dostępu do środowiska źródłowego. Dodatkowo są funkcje, których nie widać na stronie zarządzania funkcjami i konieczne jest włączenie ich z konsoli. Identyfikacja funkcji po GUIDzie jest żmudna, zwłaszcza, że zespół, który robił funkcjonalność tworzenia witryny uniemożliwił skopiowanie GUIDu brakujących funkcji zmuszając nas do przepisywania go ręcznie.

Wypracowałem metodę, która bardzo przyspieszy cały proces. Do jej wykonania potrzebujemy dostępu RDP do maszyny z SharePointem. Będziemy korzystali z PowerShella i narzędzia ULS Log viewer (darmowe, z CodePleksu).
Oto scenariusz:

  1. Włączamy logowanie dla "Infrastruktura funkcji" ("Feature infrastructure") na poziom "Podlegający monitorowaniu" ("Monitorable").
  2. Uruchamiamy LogViewera, włączamy logowanie na żywo i wpisujemy "szablon witryny wymaga" do okna filtrowania. W przypadku angielskich witryn wpisujemy "site template requires".
  3. Próbujemy utworzyć witrynę.
  4. Dostajemy błąd, który złapie LogViewer. W komunikacie błędu będzie GUID funkcji, który możemy skopiować.
  5. Uruchamiamy konsolę PowerShella i wpisujemy komendę:
    Enable-SPFeature -url {adres witryny, pod którą tworzymy witrynę} -Identity {GUID funkcji} np. Enable-SPFeature -url http://intranet -Identity 861b0621-3ab9-46ec-859e-112c04535099
  6. Powtarzamy punkty 3-5 aż uda nam się stworzyć witrynę. 2 porady przyspieszające pracę:
    1. po pierwszym otrzymaniu błędu, gdy zamkniemy okno z błędem guzik "utwórz" będzie wyszarzony. Jeżeli klikniemy "Więcej opcji" to będziemy mogli ponawiać tworzenie witryny
    2. Wciskając F3 w konsoli PowerShell otrzymujemy ostatnią komendę. Wystarczy usunąć GUIDa poprzedniej funkcji i wkleić kolejnej.

Czasami może się okazać, że funkcja nie jest zainstalowana/wdrożona na wyższym poziomie i nie da się jej włączyć. Wtedy z pomocą przyjdzie nam przetłumaczenie GUIDa na nazwę funkcji. Na dole tego postu znajduje się listę większości GUIDów standardowych funkcji SharePointa, ale możemy po prostu wpisać GUID funkcji w wyszukiwarkę WWW i prawdopodobnie znajdziemy nazwę brakującej funkcji.

Jeżeli GUIDu funkcji nie ma na tej stronie, to jest duża szansa, że jest to jakaś funkcja rozwiązania firmy trzeciej. Jeżeli po wpisaniu GUIDu w Googla (lub Binga) nie dowiemy się jakiej funkcji brakuje to musimy na środowisku źródłowym odpalić następujący kod PowerShella:
Get-SPFeature {GUID}
np. Get-SPFeature 00bfea71-7e6d-4186-9ba8-c047ac750105

Dzięki temu dowiemy się co musimy zainstalować/wdrożyć.

Tak na marginesie - wystarczyłoby, żeby przy tworzeniu witryny nastąpiło sprawdzenie jakie funkcje są potrzebne używanemu szablonowi (bo jest to wpisane w manifeście) i udostępniono guzik "Włącz brakujące funkcje". Może ktoś z deweloperów zrobi takie małe narzędzie?

Powodzenia i cierpliwości! Dużo cierpliwości!

Lista funkcji i ich GUIDy:

Funkcja GUID
AccSrvSolutionGallery 744b5fd3-3b09-4da6-9bd1-de18315b045d
AnnouncementsList 00bfea71-d1ce-42de-9c63-a44004ce0104
AssetLibrary 4bcccd62-dcaf-46dc-a7d4-e38277ef33f4
BaseSite b21b090c-c796-4b0f-ac0f-7ef1659c20ae
BasicWebParts 00bfea71-1c5e-4a24-b310-ba51c3eb7a57
BizAppsCTypes 43f41342-1a37-4372-8ca0-b44d881e4434
BizAppsFields 5a979115-6b71-45a5-9881-cdc872051a69
BizAppsSiteTemplates 4248e21f-a816-4c88-8cab-79d82201da7b
ContactsList 00bfea71-7e6d-4186-9ba8-c047ac750105
CTypes 695b6570-a48b-4a8e-8ea5-26ea7fc1d162
CustomList 00bfea71-de22-43b2-a848-c05709900100
DataConnectionLibrary 00bfea71-dbd7-4f72-b8cb-da7ac0440130
DataSourceLibrary 00bfea71-f381-423d-b9d1-da7a54c50110
DiscussionsList 00bfea71-6a49-43fa-b535-d15c05500108
DocumentLibrary 00bfea71-e717-4e80-aa17-d0c71b360101
DocumentRoutingResources 0c8a9a47-22a9-4798-82f1-00e62a96006e
EnhancedTheming 068bc832-4951-11dc-8314-0800200c9a66
EnterpriseWikiLayouts a942a218-fa43-4d11-9d85-c01e3e3a37cb
EventsList 00bfea71-ec85-4903-972d-ebe475780106
ExcelServerEdit b3da33d0-5e51-4694-99ce-705a3ac80dc5
ExcelServerSite 3cb475e7-4e87-45eb-a1f3-db96ad7cf313
ExcelServerWebPart 4c42ab64-55af-4c7c-986a-ac216a6e0c0e
ExpirationWorkflow c85e5759-f323-4efb-b548-443d2216efb5
ExternalList 00bfea71-9549-43f8-b978-e47e54a10600
FastEndUserHelpCollection 6e8f2b8d-d765-4e69-84ea-5702574c11d6
Fields ca7bd552-10b1-4563-85b9-5ed1d39c962a
GanttTasksList 00bfea71-513d-4ca0-96c2-6a47775c0119
GridList 00bfea71-3a1d-41d3-a0ee-651d11570120
ICMSv2_Assests 07bb8c5f-4e8e-47ed-8ac9-a8e38f328d80
IPFSSiteFeatures c88c4ff1-dbf5-4649-ad9f-c6c426ebcbf5
IssuesList 00bfea71-5932-4f9c-ad71-1557e5751100
IssueTrackingWorkflow fde5d850-671e-4143-950a-87b473922dc7
LinksList 00bfea71-2062-426c-90bf-714c59600103
LocalSiteDirectoryControl 14aafd3a-fcb9-4bb7-9ad7-d8e36b663bbd
LocationBasedPolicy 063c26fa-3ccc-4180-8a84-b6f98e991df3
MobileExcelWebAccess e995e28b-9ba8-4668-9933-cf5c146d7a9f
MobilePowerPointViewer 893627d9-b5ef-482d-a3bf-2a605175ac36
MobileWordViewer 8dfaf93d-e23c-4471-9347-07368668ddaf
MobilityRedirect f41cc668-37e5-4743-b4a8-74d1db3fd8a4
MossChart 875d1044-c0cf-4244-8865-d2a0039c2a49
Navigation 89e0306d-453b-4ec5-8d68-42067cdbf98e
NoCodeWorkflowLibrary 00bfea71-f600-43f6-a895-40c0de7b0117
ObaSimpleSolution d250636f-0a26-4019-8425-a5232d592c01
OfficeWebApps 0c504a5c-bcea-4376-b05e-cbca5ced7b4f
OffWFCommon c9c9515d-e4e2-4001-9050-74f980f93160
OneNote 3d433d02-cf49-4975-81b4-aede31e16edf
PictureLibrary 00bfea71-52d4-45b3-b544-b1c71b620109
PortalLayouts 5f3b0127-2f1d-4cfd-8dd2-85ad1fb00bfc
PowerPointEditServer 738250ba-9327-4dc0-813a-a76928ba1842
PowerPointServer 5709298b-1876-4686-b257-f101a923f58d
PremiumSite 8581a8a7-cf16-4770-ac54-260265ddb0b2
PublishingLayouts d3f51be2-38a8-4e44-ba84-940d35be1566
PublishingPrerequisites a392da98-270b-4e85-9769-04c0fde267aa
PublishingResources aebc918d-b20f-4a11-a1db-9ed84d79c87e
PublishingSite f6924d36-2fa8-4f0b-b16d-06b7250180fa
Ratings 915c240e-a6cc-49b8-8b2c-0bff8b553ed3
RecordResources 5bccb9a4-b903-4fd1-8620-b795fa33c9ba
Reporting 7094bd89-2cfe-490a-8c7e-fbace37b4a34
ReportServer e8389ec7-70fd-4179-a1c4-6fcb4342d7a0
ReviewWorkflowsSPD b5934f65-a844-4e67-82e5-92f66aafe912
SearchExtensions 5eac763d-fbf5-4d6f-a76b-eded7dd7b0a5
SignaturesWorkflowSPD c4773de6-ba70-4583-b751-2a7b1dc67e3a
SurveysList 00bfea71-eb8a-40b1-80c7-506be7590102
TasksList 00bfea71-a83e-497e-9ba0-7a5c597d0107
TaxonomyFieldAdded 73ef14b1-13a9-416b-a9b5-ececa2b0604c
TeamCollab 00bfea71-4ea5-48d4-a4ad-7ea5c011abe5
TranslationWorkflow c6561405-ea03-40a9-a57f-f25472942a22
VisioWebAccess 9fec40ea-a949-407d-be09-6cba26470a0c
WACustomReports af6d9aec-7c38-4dda-997f-cc1ddbb87c92
WAMaster c04234f4-13b8-4462-9108-b4f5159beae6
WAReports 2acf27a5-f703-4277-9f5d-24d70110b18b
WAWhatsPopularWebPart 8e947bf0-fe40-4dff-be3d-a8b88112ade6
WebPageLibrary 00bfea71-c796-4402-9f2f-0eb9a6e71b18
WebPartAdderGroups 2ed1c45e-a73b-4779-ae81-1524e4de467a
WordViewer 1663ee19-e6ab-4d47-be1b-adeb27cfd9d2
WorkflowHistoryList 00bfea71-4ea5-48d4-a4ad-305cf7030140
workflowProcessList 00bfea71-2d77-4a75-9fca-76516689e21a
Workflows 0af5989a-3aea-4519-8ab0-85d91abe39ff
XmlFormLibrary 00bfea71-1e1d-4562-b56a-f05371bb0115

Autor:

larson

Paweł Wróbel

Zajmuję się SharePointem od 2003 roku. Nie potrafię za bardzo programować, ale rozumiem jak działa SharePoint, wiem jak go skonfigurować i dostosować do moich potrzeb. Mimo, że na wizytówce mam "analityk", to często grzebię w bebechach SharePointa i konfiguruję go z każdej możliwej strony, która nie wymaga uruchomienia Visual Studio.
nocodesharepoint.blogspot.com


Podobne artykuły

Komentarze 2 Masz uwagi do tej strony? Napisz

przemekorlik 2011.09.13 12:52
0 oceń pozytywnie   oceń negatywnie 0
avatar
 

Fajny jasny artykuł, który naprawde pomaga przy tego typu operacjach. Najnowszy SharePoint jest uciążliwy przy przenoszeniu witryn. Dzięki za dokładny opis, a szczegółnie za tą listę GUIDów, na pewno się przyda. :)

larson 2011.11.18 13:58
0 oceń pozytywnie   oceń negatywnie 0
avatar
 
A tu jest miłe narzędzie pozwalające nam na masowe włączanie i wyłączanie funkcji witryn http://featureadmin.codeplex.com/

pzrd Larry
nocodesharepoint.blogspot.com

Dodaj komentarz

avatar

Zaloguj się lub Zarejestruj się aby wykonać tę czynność.

Autor Paweł Wróbel
avatar
 

Prowadzę zespół analityczny oraz wspieram prace nad graficznym designerem workflowów w firmie Datapolis.com. Programowaniem zajmowałem się przez 4 lata. Zaczynałem od stron WWW, potem 2 lata w C#. Teraz specjalizuję się w konfiguracji SharePointa i przepływach. Mam wykształcenie ekonomiczne.

Załóż konto
WSS to serwis, który łączy dziesiątki tysięcy specjalistów IT w Polsce, zajmujących się szeroko pojętymi technologiami Microsoft. Portal działa od 2003 roku, i oprócz setek publikacji technicznych, rozwijającego się forum - portal to ludzie, którzy go tworzą. To właśnie z myślą o nich warto codziennie nas odwiedzać.

Dowiedz się więcej o WSS