17 Mai 2010

Office Client Roundtable Präsentationen

In den letzten beiden Monaten durfte ich im Rahmen des Office 2010 Launch Programm im Namen von Microsoft drei Roundtables halten. Die Präsentationen hierzu kann man hier herunterladen.

Office Client Roundtable 1

  • Neuerungen im Office 2010
  • Deployment
  • Office Web Apps
  • Excel & PowerPoint

Office Client Roundtable 2

  • Backstage
  • Migrationsstrategien
  • PowerPivot

Office Client Roundtable 3

  • Group Policy Einstellungen
  • Access
  • Visio
  • Outlook
  • Schulungsmaterialien

07 Mai 2010

Top 10 Features in SharePoint 2010 für Entwickler

Rolf und ich haben gestern am eBusiness Kongress in Zürich während 90 Minuten über die Top 10 Features in SharePoint 2010 gesprochen. Obwohl die Zuhörerzahl etwas dürftig ausfiel, hat uns die Vorbereitung und die Durchführung des Speechs viel Spass bereitet.

Zu folgenden Features haben wir jeweils eine kleine Einführung plus eine Demo gezeigt:

  • #1 Development Environment
  • #2 LINQ to SharePoint
  • #3 Sandboxed Solutions
  • #4 Business Connectivity Services (BCS)
  • #5 REST
  • #6 Client Object Model
  • #7 Post Synchronous Events
  • #8 SharePoint Designer Workflows
  • #9 Feature Upgrade
  • #10 PowerShell

Die Slides zum Vortrag haben wir hier (bzw. brandneu auch auf docs.com unter http://docs.com/E4C) abgelegt.

23 April 2010

Neues Page Layout mit SharePoint 2010

Bereits seit SharePoint 2007 kann für strukturierten Content, welcher auf öffentlich zugänglichen Internet Sites angezeigt werden soll, eine Vorlage erstellt werden. Das Konstrukt nennt sich Page Layout und definiert das Mapping zwischen SharePoint Columns sowie der Anzeige- bzw. Edit-Ansicht. Der Vorteil daran ist, dass die strukturierten Daten dabei nicht in einem grossen Rich Text Block abgelegt sondern in einzelne Columns in SharePoint Listen geschrieben werden. Damit können z.B. Produkte, Personen, Projekte, Publikationen oder News abgebildet werden.

Heute möchte ich euch zeigen, wie mit Visual Studio 2010 ein Page Layout für SharePoint 2010 erstellt werden kann. Beide Produkte setze ich in der RTM Version ein.

Ich starte mit einem “Empty SharePoint Project”.

image

Page Layouts können wahlweise als Sandboxed Solution oder Farm Solution deployt werden.

image

Als erstes fügen wir ein SPI für die Columns hinzu. Da uns Visual Studio 2010 kein Template zur Verfügung stellt, wählen wir “Empty Element”.

image

In die Datei Elements.xml fügen wir nun unsere SharePoint Spalte (Column oder Field) ein. Wichtig ist, dass sowohl ID also auch Name eindeutig sind. Für die ID kann der GUID Generator verwendet werden. Er ist zwar in den Standardeinstellungen nicht mehr über das Visual Studio Menu erreichbar, ist aber unter C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\guidgen.exe zu finden.

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Field ID="{7F9CF172-B2FA-42C0-81D4-EA3CD2C6CF94}"
Name="WCMLocation"
DisplayName="Location"
Type="Text" />
</Elements>

Nun erstellen wir einen Content Type, in welchen wir unsere beiden Columns aufnehmen werden.

image

Wir vererben dabei von “Article Page”.

image

In der Datei Elements.xml müssen wir für jedes Spalte einen FieldRef Eintrag machen. Zwingend sind die Attribute ID und Name.


<FieldRefs>
<FieldRef ID="{7F9CF172-B2FA-42C0-81D4-EA3CD2C6CF94}" Name="WCMLocation" />
<FieldRef ID="{D720A9AC-D633-4FAB-BC03-309458A2D6C3}" Name="WCMNoEmployee"/>
</FieldRefs>

Nun können wir die Solution deployen (Ctrl+F5, Debug ist nicht notwendig) und erstellen so Site Columns und Content Type.


Über den Server Explorer können wir die SharePoint Site registrieren und die Content Types anzeigen.


image

In der Visual Studio Gallery gibt es eine Erweiterung (Imtech Create Page Layout Content Type Extension, thanks to Mastykarz Waldek), welche uns beim Erstellen des Page Layouts hilft. Nach der Installation haben wir im Server Explorer auf den Content Types ein Contentmenu Eintrag “Create Page Layout”. Um später die Master Page Gallery im Server Explorer durchsuchen zu können, benötigen wir noch die Imtech Master Pages and Page Layouts Extension.

image

Dies generiert uns ein “nacktes” Page Layout mit allen Feldern des Page Layouts. So finden wir unsere zwei Felder wieder.

image

Um das Page Layout abzuspeichern, müssen wir ein weiteres SPI erstellen. Diesmal vom Typ “Module”. Damit lassen sich beliebige Dateien in unterschiedliche Libraries wie Master Page Gallery, Web Part Gallery oder Style Library deployen.
image
Wir speichern das Page Layout im Ordner des Modules und nehmen es in das Visual Studio Projekt auf. (Um es anzuzeigen, im Solution Explorer auf “Show all Files” klicken.)
image
Nun gilt es den Inhalt des Modules anzupassen. Hierzu öffnen wir das Elements.xml im SPI WCMPageLayout. Folgende Anpassungen sind notwendig.
  • Das Url Attribut von Module muss auf “_catalogs/masterpage” zeigen.
  • Das Url Attribut von File muss direkt auf die Datei zeigen.
  • In einem neuen Property Element geben wir den Content Type des Files an. Wir sagen da, dass es sich bei dieser Datei um ein “Page Layout” handelt.
  • In einem weiteren Property Element definieren wir das Preview Image (mehr dazu weiter unten, dieses Property kann auch wegelassen werden).
  • In einem weiteren Property Element sagen wir, zu welchem Content Type dieses Page Layout gehört. Den Content Type geben wir mit folgender Syntax an:
    ”;#[Name des Content Types];#[Content Type ID];#”

<Module Name="PageLayouts" Url="_catalogs/masterpage">
<File Path="WCMPageLayout\IsolutionsWCMWcmbranchoffice.aspx" Url="IsolutionsWCMWcmbranchoffice.aspx" Type="GhostableInLibrary" >
<Property Name="Title" Value="Branch Office" />
<Property Name="ContentType" Value="$Resources:cmscore,contenttype_pagelayout_name;" />
<Property Name="PublishingPreviewImage" Value="~SiteCollection/_catalogs/masterpage/Preview Images/PreviewBranchOffice.png, ~SiteCollection/_catalogs/masterpage/Preview Images/PreviewBranchOffice.png" />
<Property Name="PublishingAssociatedContentType" Value=";#ISolutions.WCM - WCMBranchOffice;#0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF3900242457EFB8B24247815D688C526CD44D00257e2b4db7dd4475939d98af964111c3;#"/>
<Property Name="MasterPageDescription" Value="Page Layout for Branch Offices" />
</File>
</Module>

Das Preview Image können wir auch gleich in dieses Module aufnehmen.


<Module Name="PreviewImages" Url="_catalogs/masterpage" Path="" RootWebOnly="TRUE">
<File Path="WCMPageLayout\PreviewBranchOffice.png" Url="Preview Images/PreviewBranchOffice.png" Type="GhostableInLibrary" />
</Module>


Um das Page Layout einzusetzen, müssen wir einer Page Library unseren Content Type zuweisen.
image
Bearbeiten wir eine Page können wir nun über den Ribbon Button “Page Layout” ganz einfach das Page Layout anpassen.
image
Unser Page Layout sieht natürlich noch ziemlich öde aus. Wir können aber bereits unsere Daten strukturiert erfassen.
image
Jetzt kann der Graphiker an die Arbeit und das Page Layout gemäss den Vorstellungen des Kunden gestalten.
Wenn gewünscht können die verfügbaren Page Layouts auch in den Site Settings unter “Look and Feel” \ “Page Layout und Site Template Settings” angepasst werden.
Sind alle notwendigen Page Layouts erstellt, kann eine Site entsprechend den Vorgaben konfiguriert werden (d.h. Content Types auf Pages Libs, Page Layouts einschränken, Approval Workflow konfigurieren) und als Site Template abgespeichert werden. Dieses Template (neu als WSP, kann auch in Visual Studio bearbeitet werden) kann dann in der Folge für das Erstellen der neuen Sites verwendet werden.
Fazit: Den Vorteil von Page Layouts hatten wir bereits mit SharePoint 2007. Auch das Deployment als WSP war unter SharePoint 2007 via WSP möglich. Mit dem 2010er Wave haben wir aber bei der Paketierung und beim Deployment einen grossen Schritt in die richtige Richtung gemacht. Bleibt zu hoffen, dass uns in Zukunft ein paar Visual Studio Extensions das Leben noch weiter erleichtern. Ein dem CKS: Development Tools Edition haben sich die Entwickler solcher Erweiterungen jedenfalls bereits gefunden.

19 April 2010

Office 2010 RTM Release

Der RTM (Release-to-Manufactering) Release von Office 2010 ist intern bei Microsoft fertiggestellt – Hurra! Stolze Software Assurance Käufer haben Zugriff auf die RTM-Pakete ab dem 27. April. "Normale" Volume Licenising Kunden können Office 2010 ab dem 1. Mai kaufen.

Die RTM-Pakete werden u.a. in English, Französisch und Deutsch verfügbar sein. Italiensische und anderssprachige Pakete werden nachgeliefert.

Weitere Informationen gibt's hier: http://blogs.msdn.com/sharepoint/archive/2010/04/16/sharepoint-2010-reaches-rtm.aspx

07 April 2010

TechNet “Office 2010 Client / Server Scenarios”

Rolf und ich haben heute bei Microsoft Schweiz in Wallisellen einen TechNet Event zum Thema Office 2010 Client / Server Scenarios durchgeführt. Nachfolgend findet Ihr die Slides zu unserem Speech:

  • Part 1: Einführung in den Business Productivity Infrastructure Stack, Social Networking mit Office 2010  und User Adoption / Culture Shift
  • Part 2: Power Collaboration: Multi User Authoring, Office Mobile Apps, Office Web Apps und Enterprise Content Management mit SharePoint / Office 2010
  • Part 3: Access Services, Visio Services, Excel Services, PowerPivot und Search
  • Part 4: Integration einer LOB Anwendung mit den Business Connectivity Services, Outlook 2010, InfoPath Form Designer und SharePoint Designer sowie Workflows und Word Automation Services.

Uns beiden hat das Vorbereitung und Durchführen des TechNet Events grossen Spass bereitet. Ich denke, wir werden in den nächsten Tagen hier noch das eine oder andere tolle Office 2010 Feature zeigen.

24 März 2010

TechTalk: Office 2010 Client Server Szenarien

Am 7. April findet bei Microsoft ein öffentliche,und kostenlose Veranstaltung zum Thema Office 2010 Client Server Szenarien statt. Anmelden kann man sich hier: https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032437559&culture=de-ch

Die ganztägige Veranstaltung zeigt neue Möglichkeiten zur Produktivitätssteigerung auf, die sich durch den Einsatz von SharePoint 2010 und Office 2010 zusammen ergeben.

Don't miss it!

16 März 2010

Themes unter SharePoint 2010

SharePoint 2010 bietet eine neue Theming Engine. Ein Theme wird neu in einer THMX Datei abgelegt. Diese Datei kann in einem Office Client Programm erstellt werden oder aber über das Web UI zusammengeklickt werden. Im 14-Hive findet sich zwar noch ein Theme Ordner mit all den CSS Dateien und Bildern, dieser wird aber nur für Visual Upgrade verwendet. Neue Themes werden in der Theme Gallery innerhalb der Site Collection abgelegt.

Ein Theme beinhaltet Informationen über 12 Farben und zwei Schriftarten. Out-of-the-Box CSS Dateien sind mit Comments versehen, welches sich auf diese 12 Farben und die zwei Schriftarten beziehen. Wird ein Theme angewendet, werden in in den bestehenden CSS die Farben und Schriftarten ersetzt und in neuen Dateien abgelegt. Zusätzlich werden auch die Bilder neu eingefärbt.

Anbei ein Beispiel der comment-style Markup Sprache in CSS Dateien.

.class
{
/*[ReplaceColor(themeColor:“Accent5—Darker”)]*/
border:solid 1px #4f4f4f;
/*[RecolorImage (themeColor: “Accent2”, method: “Tinting”)]*/
background—image: url(“/_layouts/images/nav.gif”);
}


Mit diesem Vorgehen können natürlich nicht sämtliche Anforderungen abgedeckt werden. Teilweise muss ein Alternate CSS angegeben werden oder gar die Master Page customized werden.

Deployment

Hat man einmal ein Theme über das Web UI zusammen geklickt, kann man die THMX Datei mit dem SharePoint Designer extrahieren und in einem WSP deployen oder aber in eine andere Theme Gallery hochladen.

Im SharePoint Designer kann über das Site Object “All Files” auf den Ordner “Themes” zugegriffen werden. Hier kann die THMX Datei nun exportiert werden.

image

Will man sie nun via WSP verteilen, kann mittels Visual Studio 2010 ein neues “Empty SharePoint Project” erstellt und ein Module eingefügt werden. Die Datei Elements.xml in diesem Module (hier habe ich es “Theme” genannt) sieht folgendermassen aus:

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Module Name="Theme" Url="_catalogs/theme" RootWebOnly="TRUE">
<File Path="Theme\MyTheme.thmx" Url="MyTheme.thmx" Type="GhostableInLibrary">
<Property Name="Title" Value="MyTheme.thmx" />
<Property Name="Title" Value="MyTheme.thmx" />
</File>
</Module>
</Elements>


Code

Um das neue Theme im Code anzuwenden, darf nicht die Methode ApplyTheme() aus SPWeb verwendet werden. Hierfür steht eine neue Klasse (ThmxTheme) zur Verfügung, welche diese Aufgabe übernimmt:

ThmxTheme theme = ThmxTheme.Open(web.Site, "/_catalogs/theme/MyTheme.thmx");
theme.ApplyTo(web, true);


Obwohl die neue Theming Engine von SharePoint 2010 nicht alle Bedürfnisse abgedeckt, ist die Lösung doch brauchbar.

09 März 2010

Upgrade MySite nach SharePoint 2010

Beim Upgrade mit dem Database Attach können Content Datenbanken von Team Sites sehr einfach von SharePoint 2007 nach SharePoint 2010 migriert werden. Auch die Profiles sowie die MySites können migriert werden – es bedarf einfach etwas mehr Aufwand.

Der Shared Services Provider von MOSS / SharePoint 2007 existiert unter SharePoint 2010 nicht mehr. Profile Daten werden nun von einer Serivce Application verwaltet. Beim Upgrade migrieren wir folglich die SharePoint 2007 Profile in eine neue “User Profile Service Application”. Falls mit dem “Farm Configuration Wizard” bereits eine User Profile Service Application erstellt wurde, kann diese später gelöscht werden.

Hier die notwendigen Schritte:

  1. Zu Beginn brauchen wir die SharedServices_DB sowie die Content Datenbank(en) der MySite. Beide sollen auf dem SQL Server der SharePoint 2010 Farm zurückgespielt werden.
  2. Bitte in der Central Administration unter “System Settings” \ “Manage Services on Server” prüfen, dass die Dienste “User Profile Service” und “Managed Metadata Service” laufen.
  3. Mit dem PowerShell cmdlet “New-SPProfileServiceApplication” erstellen wir eine neue Service Application. Als Datenbanknamen geben wird die SharedServices_DB an (aus Schritt 1). Als Bezeichner (Name) verwende ich hier “SharedServices” – wer keine Altlasten will, darf natürlich gerne einen SharePoint 2010 konformen Namen verwenden.
    New-SPProfileServiceApplication -ApplicationPool "SharePoint Web Services Default" -Name SharedServices1 -ProfileDBName SharedServices1_DB
  4. In der Central Administration unter “Upgrade and Migration” \ “Upgrade Status” prüfen, dass die Upgrade Session erfolgreich abgeschlossen wurde. image
  5. Neuer Service Application Proxy erstellen. Dabei muss die Service Application ID aus Step 3 angegeben werden:
    New-SPProfileServiceApplicationProxy -name "SharedServices1_Proxy" -ServiceApplication [GUID]
  6. In der Central Administration unter “Application Management” \ “Manage Service Application” \ “SharedServices1” sind nun die migrierten User Profiles ersichtlich.
    image
  7. Jetzt können wir die MySite Content Datenbank anhängen. Zuerst können wir mit Test-SPContentDatabase prüfen, ob wir keine Upgrade Issues haben:
    Test-SPContentDatabase -Name WSS_Content_Mysite -WebApplication http://sharepoint2010.is-lab.local
  8. Sind alle Issues gefixt, kann die Content Datenbank angehängt werden. Dabei werden die MySites nach SharePoint 2010 migriert. Der Prozess kann in der Central Administration unter “Upgrade and Migration” \ “Upgrade Status” verfolgt werden.
    stsadm -o addcontentdb -url http://sharepoint2010.is-lab.local -databasename "WSS_Content_MySite"
  9. Allfällige Fehler sollten analysiert und gefixt werden:
    image
  10. In unserer User Profile Service Application müssen wir nun noch den MySite Host setzen. Zuerst muss eine Site Collection vom Typ “My Site Host” vorhanden sein. Der Farm Configuration Wizard erstellt einen MySite Host unter dem Managed Path /my. Wer mag, kann aber auch einen neuen MySite Host erstellen.
  11. Den MySite Host setzen wir in der Central Administration unter “Application Management” \ “Manage Service Application” \ “SharedServices1” \ “Setup My Sites” im Feld “My Site Host location”.
    image
  12. Damit die Benutzer auf die migrierten MySite zugreifen können, muss nun noch die User Profile Service Application mit unserer Web Application verbunden werden. Hierzu ändern wir am besten gleich die “Application Proxy Group” mit dem Namen “default”. Dazu unter “Application Management” \ “Configure Service Application Associations” auf die Proxy Group “default” klicken. Im Pop Over Dialog den vom Farm Configuration Wizard erstellte Proxy (“User Profile Service Application”) deselektieren, den SharedServices1_Proxy anwählen und als Default setzen.
    image
  13. Nach einem IISRESET sollte auf die migrierte My Site zugegriffen werden können.
  14. Zum Schluss berechtigen wir noch den Crawl Account. Dazu in der Übersicht der Service Applications auf “Administrators” klicken.
    image
  15. Der Crawl Account braucht das Recht “Retrieve People Data for Search Crawlers”.
    image

Nach der Migration sollte jeder Benutzer wieder auf seine My Site zugreifen können und seine Daten dort vorfinden. Auch Listen und Web Parts werden migriert. Beim Upgrade der My Site von SharePoint 2007 (MOSS) auf SharePoint 2010 wird direkt ein V4 Master angewendet. Der Visual Upgrade Mode steht für My Sites nicht zur Verfügung. Dies bedeutet, dass sämtliche graphischen Anpassungen verloren sind bzw. neu erstellt werden müssen.

Auch das Profile wird komplett übernommen. Custom Profile Properties werden angelegt und mit den angegeben werden abgefüllt. Evtl. ergeben sich gewisse Abweichungen bei den Privacy Settings.

08 März 2010

Office 2010 kommt am 12. Mai in die Läden

Microsoft hat das Erscheinungsdatum von Office 2010 und SharePoint 2010 bekannt gegeben. Am 12. Mai ist es soweit. Der RTM (Release to Manufacturing) wird schon im April verfügbar sein.

http://blogs.msdn.com/sharepoint/archive/2010/03/05/sharepoint-2010-office-2010-launch.aspx