SharePoint2013.Search.Error

In einer SharePoint 2013 Installation hatte die Suche über fast alle Site Collections folgenden Fehler ausgegeben:

The SharePoint item being crawled returned an error when attemping to download the item

Bild:

2013-05-20_17h52_42

Darüber hinaus ist aufgefallen, dass Benutzer mit Lese-Rechten die Fehlermeldung “Sorry, This Site Hasn’t Been Shared with You” erhalten haben.

Ein weiterer Fehler erschein bei der Antwort auf eine Konversation in der MySite.

Lösung: Die Custom Masterpage war nicht als Hauptversion veröffentlicht. Der SharePoint Designer 2013 bietet zwar die Option “Publish a major version”. Die scheint aber derzeit noch nicht zu funktionieren, weshalb man die Masterpage, Page Layout etc. manuell (Webseiteneinstellungen-> Site Settings –> Master pages and page layouts) im Browser als Hauptversion veröffentlichen muss (Publish a major version). Dieser Bug ist sicher bald behoben.

image

(In SPD 2013 funktioniert die Veröffentlichung nicht.)

image

(Über den Browser muss die Masterpage etc. manuell als Hauptversion veröffentlicht werden)

SharePoint2013.Publishing.TaxonomyField.Bug

Lieber Leser,

wer in SharePoint 2013 ein Enterprise Wiki erzeugt, die Seite in den Edit-Mode setzt, erfreut sich des folgenden Fehler:

“There was an error processing the request.”

imageimage

Dabei bleibt das Kategorien Feld leer – auch wenn Werte gesetzt wurden. Das Problem tritt auf drei – zum Teil sehr unterschiedlich konfigurieren – Umgebungen auf. D. h. einen Konfigurationsfehler kann ich fast ausschließen. Man kann den Fehler umgehen, wenn man für die Webapp die Security validation abschaltet. Das Abschalten der Security validation ist aber nicht empfohlen.

image

Mir kam das etwas spanisch vor, da ich es auf allen Umgebungen hatte und im Web nichts dazu finden konnte. Interessanterweise hatte jetzt jemand dasselbe Problem im Zusammenhang mit SharePoint 2010 und dem April CU:

http://www.1stquad.com/sharepoint-kompetenz-erfahrung-know-how/Blog/default/Mai-2013/SharePoint-2010-CU-April-2013-Issues (Marco Cattaneo, 1stQuad)

Also meine Meinung zu diesem Microsoft Bug behalte ich jetzt lieber für mich. So macht Bugpoint 2013 kein Spaß.
Welche Auswirkungen die aktuelle “Bugserie”, die zum Teil technisch – aber auch funktional sind, muss mit den Kunden abgestimmt werden. Dass die genannten Fehler von Microsoft verursacht sind, nimmt einem der erst mal nicht ab.

Guter Wochenstart, Tobias Wolter

SharePoint2013.Umlaute

Lieber Leser,

eigentlich dachte ich, dass es mit der Browser Kompatibilität besser geworden ist. Wer im Firefox aber auf “Websites” klickt bekommt man u. U. folgende spannende Fehlermeldung:

image

Man beachte die GUID!

Sorry, something went wrong

An unexpected error has occurred.

Technical Details

Troubleshoot issues with Microsoft SharePoint Foundation.

Correlation ID: 00000000-0000-0000-0000-000000000000

Date and Time: 4/23/2013 11:59:52 AM

Im Eventviewer schaut dies dann so aus:

image

 

 

Lösung:


Keine Umlaute ä,ü oder Sonderzeichen wie !,? im Benutzernamen verwenden hilft bei der Mysite. Einen Müller darf es in SharePoint – stand heute im Firefox – nicht geben. Der IE wandelt das ü in “%C3%BC” um, Firefox nicht.

Update(16:30):

Wenn man mit dem Internet Explorer von der Portal Seite auf “Websites” klickt, bekommt man auch diesen Fehler! Es geht im IE nur über den Umweg der MySite.

Auch in der Explorer-Ansicht fehlen die Umlaute:

image
Bei der Search vermutlich ein ähnliches Problem:

http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopmentprevious/thread/0e6b5369-8019-4427-b1d2-f2f2f45b561d

 

Anmerkung:


Drückt man lange genug F5 bekommt man diese Meldung:

image

Obwohl an der Web.config im CustomError Mode nichts geändert wurde(ErrorMode=True). 

Ohne einen Test auf Umlaute in Dateinamen, Benutzernamen etc. kann man doch kein Produkt wie SharePoint für die Masse veröffentlichen. Es gibt Hersteller, bei denen würde das aktuelle Release nicht den Beta Status erhalten.

Beste Grüße, Tobias Wolter

SharePoint2013.Mobile.NewsfeedApp

Lieber Leser,

Marc Zuckerberg hat mal folgendes im Zusammenhang mit Mobile gesagt: “Unser größter Fehler war zu sehr auf HTML5 zu setzen”.  D.h. wir benötigen native Apps, um per Mobile Device auf SharePoint 2013 zuzugreifen.

Natürlich ist die Newsfeed App interessant (nicht für mich, aber die Kunden). Ich habe ein Windows Phone 8 und im Marketplace die App “SharePoint Newsfeed” heruntergeladen. Der erste Anmeldeversuch ist mit “Das hat leider nicht geklappt.” gescheitet. Schade. In der Hilfe zur App findet man dann folgenden Satz:

“Wenn Ihre Organisation SharePoint Server 2013 verwendet, muss der Server mit Standardauthentifizierung konfiguriert sein, damit Sie sich an der App anmelden können. Hierbei kann Ihnen Ihr Systemadministrator helfen”

Mein Windows Phone kann NTLMv2(z. B. im Internet Explorer) – warum benötigt diese App eine Basic-Authentication? Delegierung sollte nicht nötig sein – wäre ein Grund für Basic.

Aber okay, ab in die CA und Basic Auth. konfiguriert. Da AAM mit Apps nicht mehr funktioniert (Apps kennen nur die Default Zone),  mache ich das ungern – aber für einen Test okay.

Egal in welcher Form ich meine URL(mysite.firma.com, mysite.firma.com/personal, mysite.firma.com/personal/username) eintrage, die Fehlermeldung bleibt. In den IIS-Logs ist von meinem Handy nichts zu sehen.

Ich habe diese App schon seit Monaten und in dieser Zeit wurde auch zwei Mal ein Update eingespielt.

Frage1: Gibt es da draußen jemand, der diese App nutzt und nicht dieses besch… Office365 verwendet?

Frage2: Gibt es eine bessere App?

Die App hat übrigens nur zwei Bewertungen – eine davon ist von mir. Da reden alle über SharePoint 2013 und Mobile und dann hat die offizielle Microsoft App nur eine Bewertung?

Device Channels & Co nützen einem nichts, wenn man sich nicht authentifizieren kann.

Ich hoffe, irgend ein Leser hat bereits Erfahrung damit. Ich würde mich über einen Kommentar oder ne kurze Mail Tobias.Wolter@standard-cloud.com sehr freuen.

Beste Grüße, Tobias Wolter

SharePoint2013.SiteNewsfeed.Zugriffverweigert

Lieber Leser,

wer mit SharePoint 2013 ein bisschen experimentiert, der stellt fest, dass es im Zusammenhang mit den News-Feeds oft zu SQL Exceptiones auf der Datenbank kommt. Ich hatte eigentlich alles soweit berechtigt, dass dieses Problem beseitigt sein sollte. Um so verwunderter war ich, dass beim Klick auf “Alle X Antworten anzeigen” eine Fehlermeldung mit dem Text “Zugriff verweigert” kommt, obwohl der Benutzer die bisherigen Posts sehen kann und auch Zugriff über die MicroFeed Liste hatte.

image

Fehlermeldung:

 

image

SharePoint konnte diesen Inhalt nicht abrufen. Bitte versuchen Sie es später erneut.

Technische Details

SharePoint hat den folgenden Fehler zurückgegeben: Zugriff verweigert. Sie haben keine Berechtigung, diesen Vorgang auszuführen oder auf diese Ressource zuzugreifen. Wenden Sie sich an den Systemadministrator, um Unterstützung beim Beheben dieses Problems zu erhalten.

 

Lösung:

Auch Benutzer die nur Inhalte lesen wollten benötigen das Recht “Remoteschnittstellen verwenden”. An vielen Stellen wird das CSOM von SharePoint selbst verwendet. Mich hatte gewundert wie viel Funktionalitäten trotzdem – ohne CSOM – noch funktionieren. Dieses Mal also keine SQL Exception;)

image

 

Beste Grüße, Tobias Wolter

Bericht zur Cebit 2013 & Mein Gedanken im April

Lieber Leser,

in diesem Post möchte ich über meinen Besuch der Cebit berichten und meine Gedanken im April veröffentlichen.
Nachdem ich mich am Vorabend noch mit den Reporting Services 2012 und dem Distributed Cache herumgeärgert hatte, konnte ich mich leider nicht wirklich auf den Cebit Besuch vorbereiten. Eigentlich wollte ich mit der  Bahn fahren – 69€ für 200km. Das passiert eben ,wenn man keinen echten Wettbewerb auf der Plattform hat: Schlechter Service, teure Preise. Erstaunlicherweise war am Donnerstag am Eingangsbereich um 10 Uhr noch nicht einmal der Kassier-Posten belegt, da sich die meisten bereits vorher Tickets besorgt hatten und so gut wie keine da war. In der Messe war dann aber deutlich mehr los – jedoch ziemlich unterschiedlich verteilt. Spannend empfand ich zunächst das Tagging der Aussteller. IBM hatte die Stände mit mit den Schlagworten “Big Data, Collaboration” etc. getaggt. Bei den Microsoft wurde über Produktnamen “klassifiziert”, bei Datev nach Prozess. Stellt man sich jetzt vor, dass die Firmen Abteilungen sind, dann kommt einem diesen Problem sehr bekannt vor. Dass ist das Problem, welches heute in vielen SharePoint Installationen besteht. Uneinheitliche Struktur, jeder klassifiziert nach seinem Guto und am Ende hat man das “Chaos”. Mit SP2013 wird das nicht besser – aber dazu später mehr.
Insgesamt war auf der Cebit alles sehr förmlich. Bloß nicht auffallen war wohl das Motto einiger Aussteller. Auffallend war für mich der Stand eines CMS Systems, bei welchem die Mitarbeiter als Gärtner verkleidet waren – wie auf einer Motto Party. Das Land Bayer lies eine Blaskapelle spielen und der IBM  harlem shake war auch nicht schlecht.
Ich wollte mir nicht nur einen allgemeinen Eindruck verschaffen, sondern  mich auch noch über folgende Themen informieren:

1. SharePoint.SAPIntegration

Schauen, ob es einen Aussteller gibt, welcher nachweislich ein SAP Integrationsprojekt hatte, bei dem ein SAP-User an einen SharePoint-Benutzer gemappt wurde. Die reine Datenvisualisierung aus der SAP Datenbank würde ich nicht “SAP Integration” nennen. Da aber von den mir bekannten Firmen keine Aussteller da war, wurde daraus nichts. Ich hätte mich im Vorfeld vorbereiten müssen. Und da ich mit Mobile Devices nicht umgehen kann, konnte ich Vorort nicht auch noch mit meinem Handy suchen. Da bin ich wohl selber schuld. Gute SAP-Integration kann man z. B. bei IBM Connections sehen. Bei Minute 1,28 eine Angebot, Bestellung im Activity Stream:

So hätte ich das gerne auch in SharePoint und zwar ohne Entwicklung. Ich kenne die technischen Zusammensetzung nicht, aber sollte es tatsächlich ein “einfacher” OAuth Trust wie hier und hier beschrieben, dann würde das die Möglichkeiten von echter Cloud “Technologie” beeindruckend demonstrieren. Dazu später noch mehr.

2. SharePoint.RevisionssichereArchivierung

Immer wieder kommt dieses Thema auf den Tisch. Zwar haben heute die größeren Unternehmen bereits ein professionales System, Kunden mit 100 +- Mitarbeitern haben solche Systeme oft nicht. Es gibt nicht viele Hersteller, die hier ein “richtiges” Produkt für SharePoint im Angebot haben. Mir sind nur 2 davon bekannt. Am ersten Stand mussten drei Personen geholt werden, um dann erst nichts vorzeigbares zu zeigen: “man hat das Produkt erst seit kurzem”.  Kein guter Einstieg.
Dann bin ich noch zum ecspand Stand gegangen. Dort habe ich super kompetente Beratung von einem ecspand-Partner erhalten. Dieser konnte mir sämtliche Fragen fachlich tiefgreifend beantworten. Super!
Einfach Installieren und Rechnungen ablegen – so einfach ist es leider nicht. Jeder Prozess muss von einer Wirtschaftsprüfungsgesellschaft abgenommen werden. Microsoft greift hier gerne auf die Hilfe von KPMG zurück. Diese Zertifizieren unter anderem die Microsoft Rechenzentren (.. habe ich gehört). Leider sind diese Abnahme Protokolle nicht öffentlich, man weiß also nicht ob KPMG überhaupt etwas gemacht hat oder die angeschlagene Firma einfach den Namen hergibt. Diese Wirtschafsprüfer werden meine Installation nicht prüfen. Über Sinn & Unsinn muss ich mir hier noch genaue Gedanken machen. Ich habe bereits alle Dokumente in SharePoint – warum dann auch nicht Archivieren?! Interessanterweise habe ich jetzt von einer andern Quelle gehört, dass es dem Gesetzgeber ziemlich egal ist, welchen WORM-Storage und welches System man einsetzt. Der Wirtschaftsprüfer kann zwar ein Zertifikat ausstellen, welches aber nicht wirklich notwendig ist. Ich muss mich mit dem Thema noch deutlich intensiver befassen. Spannend ist es auf jeden Fall. Fakt ist, dass es nicht billig wird – besonders für uns Schwaben nicht ganz unwichtig.

3. SharePoint.Alternativen

Ich finde es immer wieder sehr spannend, dass wirklich kleine Unternehmen in der Lage sind in gewissen Disziplinen deutlich besser als SharePoint zu sein. Da gibt es Firmen, welche nicht einmal 500 Mitarbeiter haben – z.B. Atlassian oder Alfresco, die aber funktional überzeugen können. Ich habe derzeit Testinstallation für Alfresco Share (Community Edition), Atlassian Confluence und spiele mit den Cloud Services von IBM Connections und Oracle Application Express. Auch IBM ist in einigen Bereichen sehr stark unterwegs. Bei den genannten fehlt dann eben doch oft ein sehr wichtiger Aspekt – z.B so etwas einfaches wie Datenlisten – von Lookup ganz zu schweigen. Dennoch denke ich, dass die Zukunft nur über mehrere Systeme gehen kann. Mir gefallen an der IBM ein paar Dinge sehr gut: Werbestrategie(Machen wir den Planeten ein bisschen smarter). Nicht wie bei Microsoft, wo man am Ende noch glaubt, dass man mit dem Surface zum Hip Hopper oder Maler wird. IBM ist klar dem Business Bereich commited, Microsoft versucht Privat und Business zu vereinen. Ich möchte das nicht und bin auch kein Fan des Home Office. Da ich glaube, dass es am Ende – ohne fixe Arbeitszeiten- die belastender Arbeit ist und jeder ständig Angst hat, man verpasst etwas, wenn man nicht online ist. Dennoch hat diese Strategie mit Sicherheit auch dazu beigetragen, dass Produkte entstanden sind, die besonders gut für Collaboration geeignet sind. Bei MS spürt man nach weinigen Stunden bereits, dass man – das ein oder andere – besser umsetzen hätte können. Deshalb habe ich auch Interesse SharePoint mit IBM Produkten zu vereinen. Von echter Integration – wie in diesem Video ansatzweise zu sehen – ist man aber noch weit entfernt. Der Counter am Video zeigt, dass das Interesse nicht besonders hoch ist:

Von echter Integration kann man leider nicht sprechen. Es müsste einen Trust zwischen beiden Systemen geben. Dieser wird wohl nie kommen, da Microsoft nicht mitmacht. Beim Blick auf IBM muss man auch auf die Geschichte schauen. Es gab sicher viele Gründe für den “Untergang” der IBM. Für mich in Lotus Notes Integrationsprojekten war aber einer ganz offensichtlich: keine Windows User. Erst mit großem Aufwand wurde auf IBM Seite ein Mapping zwischen dem Windows-User und dem IBM User erzeugt. Dass war einfach nur arrogant, abgehoben – denn natürlich möchte man mit einem Windows User auf Webservices etc. zugreifen können. Man hat sich der Integration aber verweigert – so wie Microsoft heute. Beide Firmen sind keine Engel und sehr amerikanisch – man liefert auch mal Software aus, die noch Bugs hat.

SharePoint.CloudFirst

Microsoft setzt derzeit ausschließlich Cloud Promotion. Sätze wie “Übergangsphase, “Die Kunden sind noch nicht soweit”, “Cloud first”, “Zukünftig werden Updates erst in der Cloud veröffentlich” sind heute in vielen Blog-Artikeln zu lesen.
Neulich habe ich sogar in einem Podcast gehört: “Die Verrückten ..”. Sicher nicht ganz ernst gemeint, zeigt es aber dennoch, dass gemäß dem Wunsch der Microsoft nur noch “Microsoft Cloud “ genutzt werden sollte.
Von MS Seite wurde bereits im Vorfeld bewusst mit Preiserhöhungen für die On-Premise Lizenzen kokettiert. Ein paar Wochen später erklärt der gleiche unabhängige Autor dann im Channelpartner, wie man O365 verkauft. Dieses Promo-Gequatsche kann ich so langsam nicht mehr hören!
Der fehlende ACS (heute Azure Active Directory) in der OnPrem Edition wird noch für richtig Ärger sorgen. Eigentlich müsste es eine Aufschrei geben, gibt es aber nicht. In dem Moment wo Microsoft nicht mehr alle Apps den ACS nutzen lässt, werden die Promo Leute, MVPs etc. eben wieder folgenden Satz sagen:
”Die Anderen(Twitter, Facebook, Google) haben es ja auch so gemacht”
Auch neulich in einem Podcast gehört: “Microsoft speichert die Daten nicht bzw. wertet diese nicht aus”. Diese Leute sollen sich doch bitte mal die Authentifizierungsmechanismen in der Microsoft Cloud erklären lassen. Warum bloggt keiner von dieser F5-Cloud-Deployment-Jungs über die Funktionswese der Authentifizierung? Natürlich müssen folgende Daten gespeichert werden – technisch geht es beim aktuellen Konstrukt nicht:
Anwendung (z.B.IBM Connection)
Benutzer (T.Wolter)
Standort (Böblingen) (Über die IP Adresse)
Dauer (2h (mit)
So kann Microsoft den Wettbewerber hervorragend überwachten. Bei der EU beschwert man sich darüber, dass Google die Daten zwischen den Google-Sevices austauscht. Für mich ist das okay. Microsoft spioniert Wettbewerber aus – und das ist kein Problem??

SharePoint.CommunityTemplate

Ich habe letzte Woche bei einem Kunden eine SharePoint 2013 Community eingerichtet. Nach ein paar Tests ist mir aufgefallen, dass es hier noch einen gewaltigen Bug gibt. Zunächst dacht ich, dass der Fehler an meiner Konfiguration liegt. Es ist aber definitiv so, dass gegenwärtig ein Community Beitrag über einen  Social Tag nicht wieder auffindbar ist:
http://www.chrisweldon.net/blog/2012/12/20/sharepoint-2013-community-tagging-architecture-and-bug/

In zahlreichen Webcasts und vielen Blogs dieses Feature angepriesen. Kein Blog, keine Webcast, nichts weißt auf diesen gewaltigen Bug hin. Jene, die die dieses Feature  promoten, haben es nach zwei Minuten für Enterprise-ready erklärt – ohne das geringste Praxis Feedback.

SharePoint.Tagging

Oh jee! Bitte mal 2 Wochen SharePoint 2013 im Einsatz mit Wiki, Community, Blogs, Newsfeed. Kann man hier ein Konzept erkennen? Gute Artikel zum Thema sind diese:

http://www.chrisweldon.net/blog/2012/12/18/sharepoint-2013-tagging-social-tags/
http://www.jasperoosterveld.com/2013/03/sharepoint-2013-keywords-tags-and-hash.html

Von den Microsoft Promotern wird auch Tagging immer als ein ausgereiftes, perfektes System verkauft. Die genannten Beiträge sind gut. Mir selbst sind min. 10 Dinge aufgefallen, die mit wirklich minimalen funktionalen Tests einer Microsoft auffallen müssen. Wenn ich eine Frage stelle und mir ein Kollege antwortet, dann möchte man dies natürlich im Newsfeed haben. Erhalten tut man dies aber nur, wenn man der Seite folgt. Die Frage ist jetzt: wie schult man seine Endanwender? Noch Schlimmer: Man kann davon ausgehen, dass dieser Sachverhalt irgendwann in der Zukunft gelöst wird. Jetzt gibt es aber angeblich keine Versionen mehr – es wird nur noch von SharePoint gesprochen. Was soll man nun auf seine Schulungsunterlagen schreiben? “SharePoint Baujahr 2013” (so wie bei Autos)? Natürlich müssen die Komponenten auf zukünftig versioniert werden.

Wie erkläre ich jetzt meinem Endanwender den Unterschied zwischen einem Social Tag, einem Hash-Tag und (Enterprise) Keywords bzw. Terms in einem Termset(Taxonomy)? Solche Fragen sollten eigentlich von den Social Promotern beantwortet werden. Warum gibt es hier nicht mehr als  ein: “man kann jetzt taggen und in der Cloud mit Yammer wird sowieso alles besser” ? Mir persönlich platzt da echt der Kragen. Zumal diejenigen die Bloggen, Webcasts betreiben offensichtlich von Microsoft finanziert werden. Nicht, dass ich etwas gegen Werbung habe, aber man sollte doch ein Microsoft Logo positionieren oder wenigstes ein “Supported by MS” irgendwo lesen können. Also der Abschuss – im negativen Sinn – war eine Videoserie bei der im Subtext stand: “Unabhängige Analysten über..”. Ich finde dieses Verhalten des Microsoft Marketing extrem unsympathisch. IBM und SAP haben solche Mittel nicht notwendig. Zumal es bei diesem Marktanteil absolut nicht notwendig ist. (Neulich hatte mir ein Kunde sogar erzählt, dass ihr Cognos-Berater zu Microsoft geraten hat.)
Hinzu kommt noch, dass einer dieser Promoter im Microsoft Partner Interview folgenden Satz liefert: “Outlook als die Kommunikationsplattform, die alle unterschiedlichen Kanäle zusammenführt”
Dass ist das beste, was einem Microsoft Wettbewerber passieren kann. Microsoft Promo nutzen, um die eigenen Stärken im direkten Vergleich herauszukristallisieren. IBM ist, zumindest gedanklich, mindestens zwei Schritte weiter. Ich versteht den Focus der Microsoft auf die beiden Achillesfersen der Microsoft nicht: Cloud und Social. So etwas wie das .Net haben andere eben nicht, keine PowerShell, die Liste könnte man lange weiterführen. Es gibt auch bei den Wettbewerbern nichts vergleichbares zu SharePoint Listen. Könnte man vielleicht auch mal erwähnen?! SharePoint Listen und der darüberlegende Security Layer sind die Stärken von SharePoint. In Spezialdisziplinen(Blog, Wiki, Community..) wird man immer verlieren. Dass ist auch nicht schlimm, sofern man anderen Firmen die Integration erlaubt und sich als Plattform positioniert. Dazu hätte ich folgende Wünsche:

1. kontinuierliche Verbesserung der Datenzugriffsschicht(SPListen mit besserer Performance, flexibler, Abfragen etc. etc.)

2. Entwicklern,  unabhängig der genutzten Technologie, sollten auf SharePoint Inhalte zugreifen können.

Microsoft erwartet schon fast Dankbarkeit, weil man Silverlight eingestellt hat und sich zu Standards wie HTML5, REST commitetd.
Dass bei Azure der I/O schlecht ist, hat nicht nur damit zu tun, dass man viel RAM verkaufen möchte, sondern auch damit, dass man keine konkurrierende Datenbank auf der eigenen Microsoft-Plattform haben möchte. Dazu noch ein Red Hat Image, damit man den Ruf des offenen Anbieters suggeriert. Am Ende bringt einem alles nichts, wenn man die Authentifizierung nicht mehr unter Kontrolle hat. Nur darüber spricht ja keiner.

SharePoint.Yammer

Vielleicht ist man bei Microsoft zu sehr auf Yammer fokussiert. Ich kenne inzwischen zwei Firmen, die es wieder abgeschafft haben, aber keine die es einsetzt. Yammer ist in seiner jetzigen Form absolut ersetzbar. Etwas zu erzeugen, gemeinsam zu erarbeiten ist eine Herausforderung. Die wesentlich größte ist das erarbeite Wissen der “Nachwelt”, andern Personen, die sich nicht kennen, die aber Schnittpunkte haben, zugänglich zu machen. Ich habe selbst bei meinem kleinsten Kunden mit 125 Benutzern das Problem, dass Inhalte, die in SharePoint abgelegt werden (egal ob PDF, Word, Wiki etc.) nicht von allen “Notwendigen” gelesen werden. Ein Yammer News-Stream, welcher nicht wirklich kontextbasiert ist, bringt da nichts. Dennoch schaut das Yammer Interface schön aus. Ich glaube aber nicht, dass man wegen der Technologie oder dem Kundenstamm 1,2 Mrd. $ ausgibt. Yammer war vor der Microsoft im höchsten Maße kompatibel zu anderen Produkten. So hatte z.B. Alfresco Share dank OAuth und Open Graph eine hervorragende Integration und konnte sich auf ECM konzentrieren. Dieses Projekt wurde nach der Microsoft Übernahme eingestellt. Von Yammer kann man was die Usablity und die GUI Gestaltung betrifft sicher noch lernen. Aber ich finde sehr gut, dass das den Partnern überlassen wird.

SharePoint.Social

Social habe ich definitiv unterschätzt. Lange waren das für mich die Leute, die selbst nur Liken, Retweeten, aber nie eigenen Content breitestellen – Follower- Slipstream-Typen. Wenn ich heute in einer Projektseite eine Konversation beginne, dann ist das nicht mehr Trash, sondern nutzbarer Content, ein echter Mehrwert. Wenn ich ein Problem in einem Projekt habe, dann tippe ich das kurz in den Feed – die Kollegen wissen bescheid und können ggf. helfen. D.h. Lync, IM ist gut, aber viel besser finde ich persönlich wenn die Gespräche einen zugeordneten Kontext erhalten. Die Person ist mir dabei ziemlich egal – deshalb rede ich beim Kunden auch nie von Social, sondern spreche die Funktionalitäten direkt an.
Ich weiß heute nicht mehr, wer mir erklärt hat, dass Paris die Hauptstadt von Frankreich ist. Schon mal versucht einen best. Satz in der ICQ Message Historie wieder zu finden? Fast unmöglich: zu viel Information, nicht dem Kontext zugeordnet.
Schreibe ich z.B in den Projektseiten-Newsfeed:
”Hey Jungs, Projekt verzögert sich, es gibt Probleme mit #Berechtigungsvergabe”
.. dann sind die richtigen Leute informiert.

Was erwarte ich jetzt beim Klick auf #Berechtigungsvergabe?
Ich erwarte Blogs, Wikis, Dokumente, Community-Beiträge, Konversationen, welche sich damit beschäftigen. Was kommt? Darüber habe ich mich schon ausgelassen. Aber die Idee dahinter ist genial. Dass ist doch genau der Mehrwert: Ich identifiziere Leute, die genau das selbe Problem/Herausforderung bereits hatten oder sich damit beschäftigt haben. Aber genug gemotzt – irgend ein Microsoft Promo Angestellter wird noch das Positive an diesem Chaos finden. Bei den Filtermöglichkeiten und der Auswertung des Newsfeed ist man noch am Anfang. Die Ideen der IBM sind hier sicherlich gut – das wird mal noch ein ganz spannendes Thema.

Fazit

Steinbrücks, Hoeneßes, Sammers, Kloppos gibt es unter den SharePointern nicht. Selten findet mal einen Artikel, welcher best. Funktionalitäten etwas kritischer betrachtet. Die Statistiken über gescheiterte Intranet Projekte kennt doch jeder. Und es sind nicht nur schlechte Berater, die Technik enttäuscht ebenfalls sehr oft.

Wie geht man mit SharePoint Schwächen nun um?
1. Man entwickelt Workarounds – im Fall von Tagging kursieren schon unterschiedlichste Empfehlungen. Ich weiß derzeit noch nicht so richtig, wie man damit umgeht. Microsoft liefert mal wieder nichts.

2. Man ersetzt für best. Bereiche eben die SharePoint Komponente durch eine andere (nicht Microsoft) Lösung. SharePoint verliert dadurch nicht an Reputation!!!

Eine der beiden Möglichkeiten sollte man aber anbieten. Wenn ich dann jeden Abend meinen RSS Reader studiere und 8x “cloud-first” hören muss und in höchsten Tönen von Features gesprochen wird, die in der Praxis mal so rein nichts bringen, dann frustriert mich das sehr.
Dass man in sehr vielen SharePoint Promo Aktivitäten dann dazu aber keine Stellung nimmt und einfach blind bei jedem Misst hinterherjubelt, geht mir gewaltig gegen den Zeiger. Gute Beratung zeichnet sich auch dadurch aus, von bestimmten Anwendungsszenarien, abzuraten.
Gute IT ist heute ein Wettbewerbsvorteil. Nicht jeder kann sich eine durchschnittliche Leistung über alle Disziplinen erlauben. Ich bin von dieser Durchwurstel-Strategie der Microsoft sehr genervt. Man bündelt alle Produkte zusammen, macht einen günstigen Preis und versucht so die Wettberber auszuschalten. Zum Glück kann sich nicht jeder durchschnittliche IT leisten. Soll die Vision der zentralen Plattform Realität werden, muss sich Microsoft öffnen. Es wird immer so getan als handele es sich hier um kleine Schwächen, die kaum spürbar sind. Kritik an gewissen Funktionalitäten ist keine Haarspalterei. Verbesserungen schafft man nur, wenn man Themen auch anspricht. Liken, Folgen und bei jedem Mist hinterherlaufen nervt. Am aller meisten stört mich, dass es dem Großteil der SharePoint Berater scheinbar völlig egal ist. Ich habe bisher nur einen Blog-Post gefunden, der sich negativ zu SharePoint Online(Office365) geäußert hat. Erfreulicher weise von einer sehr erfolgreichen Firma, welche meiner Meinung nach, den besten SharePoint Blog anbietet. Vielleicht sollten auch mal ein paar mehr Leute bloggen, die Praxiserfahrung haben. Dass SharePoint ein absolut geniales Produkt ist, steht doch außer Frage!

Eine gute IT Strategie & Beste Grüße,
Tobias Wolter

SharePoint2013.Apps.Konfiguration.Bug

Lieber Leser,

noch nie war ich bei einer SharePoint Edition in einem so so frühen Stadium in Projekten involviert wie bei SharePoint 2013. Wer sich mit der Thematik auseinandersetzt, der weiß, dass es deutlich komplexer wird. Ich habe den Eindruck, dass es noch sehr viele technische und funktionale Bugs gibt. In den der vergangenen Wochen habe ich zusammen mit dem Kunden eine Umgebung aufgebaut, in sowohl Apps genutzt werden sollten, als auch die Reporting Services, um Produktionsauslastungsreports direkt im Portal bereitzustellen. Dies bringt noch den Sonderfall mit, dass die Kerberos Authentifizierung mit Delegierung zwingend erforderlich ist. Relativ schnell waren die zwei Webapps für MySite und das Portal mit Kerberos konfiguriert. Die Reporting Services 2012 konnten auch schnell bereitgestellt werden. Problematisch wurde es dann mit den Apps. Wer im Web die Blogs verfolgt, der bekommt meinst eine “falsche” Anleitung. Denn es wird keine eigne Webanwendung für die Apps erzeugt. Gute Artikel zum Thema sind:

 

How To Configure SharePoint 2013 On-Premises Deployments for Apps (Chris Whitehead)
http://blogs.technet.com/b/mspfe/archive/2013/01/31/configuring-sharepoint-on-premise-deployments-for-apps.aspx

und von Steve Peschka:

Planning the Infrastructure Required for the new App Model in SharePoint 2013

http://blogs.technet.com/b/speschka/archive/2012/09/03/planning-the-infrastructure-required-for-the-new-app-model-in-sharepoint-2013.aspx

Ich habe meine Umgebung mit 3 IPs und entsprechenden Zertifikaten aufgesetzt und die Installation einer App hat auch sofort funktioniert – ebenso wie sämtliche App-Parts.
Ein gewaltiges Problem gab es aber, wenn man auf die Seite der App wechselte. Hier die Seitenausgabe:
image
(Ausgabe ohne die Core CSS Datei.)
Beim ersten Aufruf kam allerdings auch häufig dieser Fehler:
image

Im Fiddler wurde die Ursache dann etwas ersichtlicher (403 Forbidden bei defaultcss.ashx)

image

Dazu kam noch folgender Sachverhalt: Im RootWeb der SiteCollection geht der Aufruf einwandfrei, keine Probleme. Und aus irgend einem  Grund ging es auch – nur ab und zu-  auf einer der Subseiten. Da es offensichtlich ein Berechtigungsproblem war, waren die ersten Ansätze natürlich auf dem App Web, “datenbanktechnisch” und per SPWebapplication.GrantAccessToProcessIdentity() sowie User Policy die Berechtigen zu setzen. Jedoch alles ohne Erfolg. Wenn man sich den Code anschaut, dann wird dort schon auf eine Access Denied Execption spekuliert und ein neues SPWeb im System Context erzeugt. Performance?? Allerdings scheint auch dieser Codeblock eine Access Denied Exception auszulösen:

image

Im ULS gab es folgende Meldungen:

defaultcss.ashx: using elevated codepath to get css file or other resource because the non-elevated code path failed to get it. System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0×80070005 (E_ACCESSDENIED))   
at Microsoft.SharePoint.SPGlobal.HandleUnauthorizedAccessException(UnauthorizedAccessException ex)   
at Microsoft.SharePoint.Library.SPRequest.SetWebMetainfo(String bstrUrl, Object varMetainfo)   
at Microsoft.SharePoint.SPWeb.UpdateProperties(StringDictionary data)   
at Microsoft.SharePoint.SPWeb.set_MasterDefaultCss(String value)   
at Microsoft.SharePoint.SPWeb.get_MasterDefaultCss()   
at Microsoft.SharePoint.ApplicationPages.DefaultCss.GetResourceUrl(SPWeb web, Boolean getResource)   
at Microsoft.SharePoint.ApplicationPages.DefaultCss.ProcessRequest(HttpContext context)

und

Application error when access /_layouts/15/defaultcss.ashx, Error=Access is denied. (Exception from HRESULT: 0×80070005 (E_ACCESSDENIED)) 
at Microsoft.SharePoint.SPGlobal.HandleUnauthorizedAccessException(UnauthorizedAccessException ex)   
at Microsoft.SharePoint.Library.SPRequest.OpenWeb(String bstrUrl, String& pbstrServerRelativeUrl, String& pbstrTitle, String& pbstrDescription, String& pbstrTitleResourceId, String& pbstrDescriptionResourceId, Guid& pguidID, DateTime& pdtTimeCreated, String& … at Microsoft.SharePoint.SPWeb.InitWeb()   
at Microsoft.SharePoint.SPWeb.get_Title()   
System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

 

Lösung:

 

Es ist nicht so, wie in den Artikeln beschrieben, dass alle Webanwendungen den selben ApplicationPool benötigen. Aber: Der ApplicationPool-Benutzer des Portals muss auch der ApplicationPool-Benutzer der App-Webapplication sein. Ich gehe davon aus, dass das in einem Service Pack das noch behoben wird. Denn ich möchte eigentlich eine Best Practice Installation – so wie im TechNet beschrieben. Wer aber dieser Empfehlung folgt, der wird sehr oft feststellen, dass SharePoint nicht die nötigen Rechte auf der SQL Ebene durchführt. “Login faild for User..” bekommt man ca. 5 mal. Das ist sehr ärgerlich, da SP über den SP_Farm(securityadmin, dbcreator) eigentlich über genügend Rechte verfügen sollte, um selbst die Berechtigungen zu setzen. Die vergangen zwei SP2013 Installation hätten eigentlich Material für sehr viele Blog-Posts geliefert. Ich gehe aber einfach mal davon aus, dass sich Microsoft bessern wird. Es gibt ein paar lustige Fakten: Damit Apps funktionieren, muss man den LoopbackCheck deaktivieren (da jede App eine eigene GUID bekommt). Früher war man der “Depp” wenn man das so gemacht hatte: “less secure and recommended for DEVELOPMENT environments)”. Auch Kerberos geht in der App nicht – blöd wenn der Kunde per Firewall NTLMv2 verbieten möchte.

Seit der Einführung der App beklage ich mich in diesem Blog über den fehlenden on-premise ACS. Steve Peschka hat jetzt eine Bastelanleitung geschrieben, wie man Apps mit  FBA und SAML nutzten kann. Im Grunde genommen eine High trust App. Jede gekaufte App müsste dann angepasst werden. Kein Mensch wird das machen, aber wer Interesse hat:

http://blogs.technet.com/b/speschka/archive/2012/12/07/using-sharepoint-apps-with-saml-and-fba-sites-in-sharepoint-2013.aspx

MS hat natürlich auch eine andere Lösung: Anbindung an ACS

http://blogs.msdn.com/b/besidethepoint/archive/2012/12/10/sharepoint-low-trust-apps-for-on-premises-deployments.aspx

MS nimmt sich hier ein Recht heraus, dass ihnen definitiv nicht zusteht. Heute mag man mit einer Google App über OAuth auf SharePoint Inhalte zugegriffen können. In ein paar Jahren geht das definitiv nicht mehr, denn Google ist ist public-Cloud Business zurecht erfolgreicher:
http://www.handelszeitung.ch/unternehmen/holcim-setzt-kuenftig-auf-google
Java ist – nach wie vor – der gefragteste Skill für Entwickler. Und dafür ist dann eine Google, Oracle oder IBM Plattform eben attraktiver. Darüber hinaus wird mit dem ACS das selbe passieren, wie bereits bei FB und Twitter:

Facebook kappt Open-Graph-Zugriff, wenn Startups keine Daten liefern

http://t3n.de/news/facebook-beschneidet-apps-438129/

Twitter auf Isolationskurs: Nach LinkedIn folgt jetzt Instagram

http://t3n.de/news/twitter-isolationskurs-linkedin-404538/

Microsoft liefert den ACS (heute Azure Active Directory) nicht ohne Hintergedanken für lau.  Da muss sich eindeutig etwas tun. Ich werde die Plattform wechseln, sollte sich in den nächsten zwei Jahren nichts mehr tun. Der ACS muss auch on-premise, in der private Cloud, verfügbar sein.

Funktionierende Apps & Schönes Wochenende, Tobias Wolter

SharePoint2013.DistributedCacheService.Neuinstallation

Lieber Leser,

mit SharePoint 2013 wurde eine neue Komponente, der Distibuted Cache, eingeführt. Dieser in-Memory Cache, welcher auf dem Server Feature Windows Server AppFabric 1.1 basiert, übernimmt folgende Aufgaben:

  • Authentifizierung (bei einem Wechsel des WFE(hinter NLB) muss diese nicht erneut durchgeführt werden) Ob das so stimmt, dazu später mehr – kann man jedoch überall lesen.
  • Newsfeeds (20 Posts pro User, 20 SiteActivices, Documenten Activitis, Tag Activities..)
  • OneNote client access
  • Security Trimming
  • Page load performance (hier muss ich noch genauer Forschen)

Dieser Service sollte standardmäßig auf jedem Frontend-Server aktiv sein. Theoretisch könnte man dafür auch eine eigene Farm mit mehren Hosts aufbauen. Da wir SharePoint skalieren können, wird man normalerweise nicht direkt mit einem eigenen Cluster beginnen. DistributedCacheService.exe benötigt RAM – auch wenn dieser nicht genutzt wird. Im Standard sollte er laut msdn 10% des physikalisch verfügbaren Speichers beanspruchen. Mindestens 2 GB sollten hierfür eingeplant werden. Auf meiner 32GB Maschine benötigt er aber nur 1,2 GB(Allerdings ohne Daten;)). Bei einer Kundeninstallation sind es bereits 2,3 GB.
Dynamic Memory Allokation der VM ist hier eine schlechte Idee – wird glaube ich aber sowieso selten eingesetzt. Für die Kommunikation sind auf den Cluster Hosts die Ports (22233 Cache, 22234 Cluster, 22235 Vermittlung, 22236 Replikation) sowie 1433(Default-SQL) zu öffnen. Im Cache können natürlich nur serialisierbare Objekte abgelegt werden. Da alle Klassen “Internal” sind, kann der Cache von SharePoint-Erweiterungen (Webparts etc.) nicht über die SharePoint-API genutzt werden. Es gibt aber ein CodePlex Projekt, welches einen AppFabric-Wrapper für den Zugriff auf den Cache bereitstellt: http://sptoolbasket2013.codeplex.com
.
Der Service wird standardmäßig unter dem Farm-Account ausgeführt und greift auf die Konfiguration-Datenbank (Tabellen CacheClusterConfig, CacheClusterConfigSchemaVersion)  zu.

Im Standard ist der Service nicht für HA konfiguriert. D.h. man muss bei mehren Frontend-Servern dies manuell durchführen Achtung: Wer den Distributed Cache als Cluster Service nutzen möchte, der benötigt die Enterprise Server Edition. Andernfalls stoppt der Service mit dieser schönen Meldung:

imageimage
Wo steht denn das im Technet? (Set-CacheConfig –Secondaries) Diese Info habe ich nicht gefunden.

Damit der Distributed Cache ordnungsgemäß funktioniert, müssen einige Bedienungen erfüllt sein. Die Neuinstallation dieses Service sollte vermieden werden. Ich musste es in einem Fall tun. Stellen wir uns vor, es hätte jemand bei Programs and Features “AppFabric 1.1 for Windows Server” vom Frontend-Server entfernt.

 

Sämtliche Aktionen werden mit einem lokalen Admin ausgeführt. Der Der Distributed Cache-Service Account muss zum Installationszeitpunkt auch local Admin sein.


1. Schritt: Environment Variable PSModulePath anpassen

C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files (x86)\Microsoft SQL Server\110\Tools\PowerShell\Modules;C:\Windows\System32\WindowsPowerShell\v1.0;c:\Program Files\AppFabric 1.1 for Windows Server\PowershellModules;
image

Den Pfad c:\Program Files\AppFabric 1.1 for Windows Server\PowershellModules nach einem Semikolon anfügen.

Andernfalls gibt es bei der 2. Installation den Error-Code 1603 (MSI)

2. Schritt: Download & Installation

http://www.microsoft.com/en-us/download/details.aspx?id=27115
Dann, wie immer mit <runas Administraotr>, dieses Script ausführen:
$pfad = “c:\WindowsServerAppFabricSetup_x64.exe”

& $fpfad /i CacheClient”,”CachingService”,”CacheAdmin /gac

3. Schritt: Vorhandene Cache Instanz entfernen

PS> Remove-SPDistributedCacheServiceInstance (ohne Parameter)

4. Schritt: Konfigurationsdatei überprüfen

Die XML-Konfigurationsdatei liegt unter:

C:\Program Files\AppFabric 1.1 for Windows Server\DistributedCacheService.exe.config

Diese kann nicht bearbeitet werden (kann man schon, aber im Standard ist nur System berechtigt). Deshalb eine Kopie davon anlegen und überprüfen ob die folgenden zwei Zeilen enthalten sind:
image
(SP_DB ist mein DB-Alias, SP_Config die Konfigurationsdatenbank)

5. Schritt: Registry überprüfen.

Leider ist es so, dass in der Registy diese Daten nicht hinterlegt sind. Das ist bei der Neuinstallation der Fall:

image

Wenn in der Registry(@HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppFabric\V1.0\Configuration) der Provider und Connection String nicht hinterlegt ist, dann funktioniert der Cluster zwar (Cluster UP, Host UP) und SharePoint kann den Host starten und stoppen, RAM wird auch schon gefressen – SharePoint kann ihn aber nicht nutzten. Mit get-Cache erkennt man, dass keine Bereiche angelegt wurden:
2013-03-10_02h34_17

(Cache Cluster wurde zuvor gestartet)

6. Schritt: Neue Host-Instanz erzeugen

$SPFarm = Get-SPFarm
$cacheClusterName = "SPDistributedCacheCluster_" + $SPFarm.Id.ToString()
$cacheClusterManager = [Microsoft.SharePoint.DistributedCaching.Utilities.SPDistributedCacheClusterInfoManager]::Local
$cacheClusterInfo = $cacheClusterManager.GetSPDistributedCacheClusterInfo($cacheClusterName);
$instanceName ="SPDistributedCacheService Name=AppFabricCachingService"
$serviceInstance = Get-SPServiceInstance | ? {($_.Service.Tostring()) -eq $instanceName -and ($_.Server.Name) -eq $env:computername}
$serviceInstance.Delete()
Add-SPDistributedCacheServiceInstance
$cacheClusterInfo.CacheHostsInfoCollection

 

7. Schritt: Berechtigungen für Service Accounts setzen

Damit der Cache auch genutzt werden kann, müssen die Service Accounts von Profile, MySite(App Pool) und den Webanwendungen mit Grant-CacheAllowedClientAccount für den Zugriff berechtigt werden.

Fehler:

image

Lösung:

Grant-CacheAllowedClientAccount <Account Name>

Das Log zur Fehleranalyse befindet sich hier:

image

8. Schritt: Service Account für den Profile Proxy berechtigen

image

 

9. Schritt: Cache-Cluster starten (Start-CacheCluster (wenn es nur ein Host ist wird dieser auch gestartet (start-cachehost))

2013-03-10_02h31_05

10. Schritt: Überprüfen ob sich über die CA der Cache-Host starten & stoppen lässt

image

 

11. Schritt: Eigener Service Account (derzeit (persönliche Meinung) noch nicht empfohlen!!) setzen

 

$userName = "standard-cloud\SP_DistributedCache"

Add-PSSnapin -Name Microsoft.SharePoint.Powershell -ErrorAction SilentlyContinue

$ServiceAccount = Get-SPManagedAccount -Identity $userName -ErrorAction SilentlyContinue

if ($ServiceAccount -eq $null)

{

                # Get Credentials for $userName and Create New Managed Account

                $credential = Get-Credential -Credential $userName

                $ServiceAccount = New-SPManagedAccount -Credential $credential

}

$CacheService = (Get-SPFarm).Services | ? {$_.Name -eq "AppFabricCachingService"}

$CacheService.ProcessIdentity.CurrentIdentityType = "SpecificUser"

$CacheService.ProcessIdentity.ManagedAccount = $ServiceAccount

$CacheService.ProcessIdentity.Update()

$cacheService.ProcessIdentity.Deploy()

Mit diesem Script sollte eigentlich ein neuer Service Account gesetzt werden. Das Script läuft fehlerfrei durch. Laut SharePoint Konfiguration ist der User auch gesetzt – bei den Windows Service Accounts tut sich jedoch nichts.(habe ich auf 3 verschiedenen Farmen getestet)

Wenn der Cache funktioniert, dann sollten die PS-Ausgaben so aussehen:

Get-CacheClusterHealth

image

get-cachehost

image

getcache

2013-03-14_15h43_03

Fazit: Nach meinen bisherigen Erfahrenen gibt es noch einige Bugs. Natürlich könnte man sich jetzt Fragen: Warum bietet nicht der Application-Server(IIS) bereits ein Cache-Cluster? Warum habe ich drei Stellen an denen die Konfiguration abgelegt ist? Was passiert wenn mein Cluster kaputt geht? Die Neuinstallation des Service(Windows-Service) bringt nichts, da die Konfiguration in der Config DB abgelegt wird. Ich hatte jetzt den image

außergewöhnlichen Fall, dass ein Server umbenannt wurde.

Ich habe mit allen Möglichen Cmdlets (register-hostcache..) versucht diesen Unknown-Host – auch mit den “dreckigsten Mitteln”(DB-Zugriff) zu entfernen. Es ist mir nicht gelungen. Da die Cluster-Konfiguration in der ConfigDB verschlüsselt sind, kann man hier fast nichts machen.  Ich musste die Farm komplett neu aufsetzen.  Was passiert nun bei einem Restore, wenn die Cache-Hosts (DNS-technisch) nicht mehr existieren? Zwar kann man den Config-Wizard mit “skipRegisterAsDistributedCachehost” starten, um die Neuregistration zu verhindern, der invalide Host bleibt aber erhalten.

Nach meinen jetzigen Erfahrungen kann ein Restore nur mit den gleichen Server-Namen durchgeführt werden.  SharePoint sollte eigentlich nur die Cachhost-Uri interessieren. Alles andere gehört in eine eigene DB mit eigner Konfiguration. Hoffentlich gibt es hier bald eine Version 1.2.

Noch bin ich noch nicht so ganz “warm” mit diesem neuen Service.

image

Cachhost Service status= UP + Beste Grüße, Tobias Wolter

Weitere Informationen zum Distributed Cache:

 
http://technet.microsoft.com/library/jj219700(office.15).aspx

http://technet.microsoft.com/en-us/library/jj219613(v=office.15).aspx#changesvcacct

http://rakasatria.wordpress.com/2013/02/04/sharepoint-2013-spdistributedcacheserviceinstance-cachehostinfo-is-null/

http://technet.microsoft.com/en-us/library/jj219613.aspx

http://blog.idera.com/sharepoint/the-five-minute-cheat-sheet-on-sharepoint-2013s-distributed-cache-service/

SharePoint2013.HostNamedSiteCollection.SSL.Error

Lieber Leser,

ich habe einen SharePoint 2013 mit Host Named Site Collections im Einsatz. Immer wieder passiert es mir, dass ein neues Element nicht in der Suche auftaucht.  Im Eventlog und SharePoint

EVENTLOG
An operation failed because the following certificate has validation errors:

Subject Name: E=mail@tobiaswolter.de, CN=*.standard-cloud.com, O=Tobias Wolter, L=Böblingen, S=Baden-Wuerttemberg, C=DE

Errors:

SSL policy errors have been encountered.  Error code ’0×2′..

CRAWLLOG

An unrecognized HTTP response was received when attempting to crawl this item. Verify whether the item can be accessed using your browser. ( Error from SharePoint site: WebExceptionStatus: TrustFailure The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. )

image

Bei Host named Site Collections wird nicht jede einzelne SC als Content Source definiert, sondern der Server:

image

D.h. der Zertifikatsfehler ist schon richtig. In der CA gibt es aber eine Option, welche diese Fehler ignorieren sollte.

image

Aus irgendeinem Grund muss diese Einstellung immer wieder neu gesetzt werden. Die Option bleibt zwar auf “YES”. Damit die Suche aber wieder funktioniert, muss der Haken entfernt und erneut gesetzt werden. Danach funktioniert die Indizierung wieder. Ich gehe davon aus, dass das noch ein Bug ist, der bald behoben wird.

Beste Grüße, Tobias Wolter

Was beeinflusst die SharePoint Performance (Teil 7)

image
Lieber Leser,

nach einer langen Pause möchte ich nun diese Serie weiter fortführen. Je “höher” der Layer, desto größer sind die Vorteile natürlich. WCM wäre ohne den Output Cache, auch Page Output Cache genannt, mit SharePoint nicht möglich. WCM und SharePoint wäre ein Blog-Thema für sich. Ich bin da sehr vorbelastet und habe auch eine Meidung dazu. Dass der Microsoft Partner of the year, welcher O365 verkauft, nicht auf SharePoint setzt,  erklärt vielleicht einiges. Alleine der Viewstate ist oft größer wie so mache Typo3 Seite. Solange man bei Forms-Entwicklung bleibt, wird WCM immer problematisch sein. Vielleicht gibt es ja mal eine App, welche SharePoint als Datenlayer verwendet. WCM mit SharePoint geht – wie fast alles mit SharePoint irgendwie geht. Für mich ist das Hauptkriterium, dass Google die Seite mag (Seitenaufbauzeit, schönes HTML..) . Ich warte schon auf einen Blog-Artikel, der einen Test hierzu liefert. Es gibt viele Artikel zu Tag-Navigation oder Cross Site Publishing, aber keinen hierzu. Schade. Nach neusten Studien ist der Faktor “Anständiges HTML” nicht mehr so wichtig: http://blog.searchmetrics.com/de/2012/02/09/die-google-ranking-faktoren-2012-fur-deutschland/
Grund genug sich mit dem Output Cache zu befassen!

Der Outputcache funktioniert nur mit Publishing-Seiten und ist standardmäßig nicht aktiviert:

image

Das macht auch Sinn, wie man gleich sehen wird. Gespeichert wird im Outputcache die komplette Webseite. Das spart den Weg in die darunterliegenden Layer, SQL Ressourcen und CPU für das Rendering. Implementiert wird der Output Cache über zwei IIS Module.

Da die Webseite in Abhängigkeit der Berechtigungen unterschiedlich ausschaut, muss es mehrere Versionen einer zwischengespeicherten Seite geben. Die Kriterien, welche den Schlüssel für diese “Cache-Version” erzeugen, werden in Profilen gespeichert:

imageimage

(Seitenaktionen->Webseitensammlungsverwaltung->Cachprofile für die..)

Diese Profile werden dann auf Site-Collection Ebene für anonyme- und authentifizierte Benutzer einem getrennten Profil zugewiesen. Darüber hinaus ist es auch möglich einer Webseite, einem Page Layout  oder Masterpage ein gesondertes Profil zuweisen:

image

Das macht z.B. dann Sinn, wenn ich eine Webseite habe, welche sich für einen großen Teil der Inhalte die “gleiche” Cache-Version verwenden soll, auf einer best. Seite(Masterpage, Layout etc.) müssen aber Benutzerprofilinformationen angezeigt oder gepflegt werden. Dann würde man dieser Seite eben ein anderes Cache Profil zuweisen. Mit einer kleinen Entwicklung, einem “Vary by Customer Parameter” könnte man auch eine Cache-Version für jeden Nutzer anlegen.

Bevor man den Cache aktiviert, solle man die Profile begutachten. Es gibt bereits vordefinierte, welche mit sinnigen Einstellungen angelegt wurden:

imageimage 

 

Einstellung Beschreibung
Titel Name des Profils (Öffentlich, Extranet etc.)
ACL-Überprüfung ausführen Legt fest, dass jede “Cache-Information”  mit einer ACL abgelegt werden. Macht in Kombination mit “

Unterscheidung nach Benutzerrechten” Sinn.

Aktiviert Wenn es Probleme damit gibt (dazu gleich mehr), kann es einfach deaktiviert werden. Da ein Profile an vielen verschieden Stellen aktiviert werden kann –  eine gute Einstellung.
Dauer Verweildauer: wie lange wird der Cache als gültig markiert, bevor die Version aus dem Cache entfernt/überschrieben wird.
Auf Änderungen überprüfen Ist der Haken deaktiviert, dann kann ggf. für die unter Dauer definierte Zeit ein Benutzer auf etwas zugreifen, auf das er vielleicht gar kein Recht mehr hätte. Da 180 Sek. aber nicht “die Welt” sind, würde ich ihn deaktivieren.
Unterscheidung nach HTTP-Headern Könnte man verwenden, wenn man für unterschiedliche Header reagieren möchte. Da man das am Client/Browser nicht wirklich beeinflussen kann, macht dies vermutlich nur in der Kombination mit einem Proxy Server, welcher zusätzlich Headerinformationen(für was auch immer) liefert.
Unterscheidung nach Abfragezeichenfolgeparametern Kann man z.B. verwenden wenn man für einzelne Benutzer eine eigene Cache-Version haben möchte. Mehr hier

Unterscheidung nach Abfragezeichenfolgeparametern

Die GET-Parameter sollten i. d. R. nicht von Bedeutung für das Caching sein.

Unterscheidung nach Benutzerrechten

Für authentifizierte Benutzer ist dieser Haken Pflicht . In einem Profil für anonyme Benutzer wird sie nicht benötigt.
Cachefähigkeit
image
Dem Client(Browser) und dem Proxy-Server(Apache, UAG, TMG) wird mitgeteilt, ob gecacht werden darf:
NoCache: Client und Proxy dürfen zwischenspeichern, müssen sich aber über eine Änderung informieren;
Private(Standard): Client darf speichern, Proxy nicht
Server: verhält sich wie NoCache(Control: no-cache)
ServerAndNoCache: verhält sich wie NoCache
Public: Alle dürfen zwischenspeichern. Das kann natürlich sehr gefährlich sein. Wenn der Proxy-Server anfängt, die Anfrage nicht mehr an SP zu senden, sondern die Seite direkt ausliefert. Ich habe schon bei einer falschen TMG Konfiguration gesehen, dass man OWA-Mails des Kollegen lesen konnte, da dessen Version von ISA ausgeliefert wurde. Für authentifizierte Benutzer ein NoGo! 
ServerAndPrivate:Response wird auf dem Server “gecacht”(eigentlich weniger – aber das sollte den Browser nicht interessieren), Browser darf zwischenspeichern, Proxy Server nicht.

image

Sicher für authentifizierte Verwendung

Schützt das Profil vor unsachgemäßer Verwendung. Ein Admin, welcher dieses Profil ggf. einem Page Layout zuweist, weiß ja nicht zwangsweise wie dieses Profil konfiguriert wurde.

Schreibern erlauben, zwischengespeicherten Inhalt anzuzeigen

Dieser Haken sollte immer gesetzt sein. Für jemand der bearbeiten darf, sollte immer die aktuelle Version ausgeliefert werden. Das Java-Script kommt ganz schön durcheinander, wenn der Haken deaktiviert ist. Bei einer Wiki-Seite, welche mit “[[“ erzeugt wird, wird die Seite generiert, im Anschluss aber nicht der Link auf der Quell-Seite erzeugt==> Chaos.

Die Cachefähigkeit werden wir in Kombination mit dem BLOB Cache noch einmal genauer beschreiben. Dort kann man nämlich auch festlegen, ob auf eine Aktualisierung (z.B von einem Bild) von Client-Seite überhaupt überprüft wird ob es eine neue Version gibt oder das Bild direkt aus dem Browser-Cache angezeigt wird. Damit kann man die Request-Anzahl reduzieren. Aber mehr dazu in BLOB-Artikel.

Hört sich soweit alles ganz gut an. Noch ein paar wichtige Anmerkungen:

Eine Änderungen einer Seite führt zum einem “Cache Flush” aller Seiten der Site Collection auf diesem Profil. D.h. bei klassischem SharePoint Nutzerverhalten kostet mich das Aktivieren der Outputcache Ressourcen und damit auch “unnötige” Performance.

Habe ich mehr als 10000 “unique” Berechtigungen (Breakroleinheritance auf Listen, Elemente- und Webebene), funktioniert der Cache nicht mehr. Man muss noch bedenken, dass in den beiden Papierkörben(Site Collection, Web) auch Elemente enthalten sind. Auf der DB muss hierfür folgendes Statement ausgeführt werden.

SELECT * FROM TVF_Perms_Site(‘SPSite.id)

Das 10.000 Limit kennen wir von vielen Sharepoint-Limits. Wenn mehr als 10.000 Zeilen zurückgeliefert werden, wird ein Table-Lock erzeugt, welcher die ganze Tabelle kurzzeitig auch für alle anderen lesenden Sitzungen blockiert. Das ist ein Unterschied zu Oracle, hier können lesende Operationen nicht andere lesende Operationen blockieren. Ich habe das mal getestet, konnte aber keinen Table-lock feststellen. Der default Isolation-Level wurde für diese Transaktion nicht angepasst (NOLOCK), deshalb war das etwas unerwartet, dass es kein Table Lock gibt(auch wenn man den Query-Hint der Funktion entfernt). Dennoch sind große Ergebnismengen für alle Datenbanken schlecht – für SQL jedoch besonders schlecht. Wer möchte, kann den Output Cache auch über die Web.config Konfiguration anpassen. Nachdem man den Cache aktiviert hat, ist es definitiv ratsam zu überprüfen, ob dieser auch funktioniert.

  • image

    Danach wird in der letzten Zeile des Source Codes eine Information ausgegeben:

    image

    Man sieht welches Profil geladen wurde und zu welcher Uhrzeit die Version erstellt wurde. Es sollte definitiv darauf geachtet werden, dass die Version für die Cache-Lifetime( Dauer) auch bleibt. Es gibt mehrere Gründe, warum ggf. bei jeder Anfrage eine neue Version erzeugt wird:

    1. .Net Patch http://support.microsoft.com/kb/2638420
    Nach diesem Patch wird bei jedem Response ein Cookie angefügt und der Cache funktioniert nicht mehr;

    2. Entwicklung, die ein Cookie in den Response hängt;

    3. Dezember 2010 CU (SharePoint 2010)

    Danach funktioniert der Cache für authentifizierte Benutzer auch nicht. Naja CUs – ein spezielles Thema. Wer ein CU direkt nach Veröffentlichung installiert, geht aber definitiv grob Fahrlässig mir der Farm um.

    4. Wenn “Auf Änderungen überprüfen” oder “ACL-Überprüfung ausführen” aktiv sind, wir bei jeder Änderung (SPSite.LastContentModifiedDate) der Cache für ALLE Seiten geleert. Für Kollaboration mit authentifizierten Benutzern ist dieser Cache eine Bremse.

    Ein iisreet löscht den Cache natürlich auch.

     

    Fazit: Für den Webauftritt mit anonymen Usern ist der Output Cache ein muss! Wer klassisches SharePoint Userverhalten lebt, der sollte diesen Cache nicht aktivieren. Es gibt zu viele Bedingungen, die zu einem Neuaufbau des Cache führen. Dass der Cache bei einem Update eines beliebigen Elementes für jede Seite neu aufgebaut werden muss “nervt”. Wenn man aber bedenkt, dass in einer Wiki-Seite ggf. Listen, SearchResults, Ergebnisse von Webparts aus Webservices etc. angezogen werden, dann ist es auch technisch gar nicht so einfach ein “Update” der Seitenausgabe mitzubekommen.

    Sonstige Anmerkungen

    Vor ein paar Wochen war ich auf einem Vortag zu Azure IaaS. Meine Meinung: zu teuer im Vergleich mit Profitbricks, Cloudsigma & CO. Wer die VM ausschaltet bezahlt trotzdem für CPU und RAM. Man muss die VM erst exportieren, danach löschen und wieder importieren. Was für ein Aufwand! Ob eine VM ausgeschaltet ist oder nicht, kann auch eine Microsoft feststellen. Man könnte es auch “Abzocke” nennen. Ich bin inzwischen wieder bei Hardware von Hetzner. Eine SharePoint Maschine im “Leerlauf” mit allen Rollen + SQL benötigt ohne offene Apps, Visual Studio etc. bereits 16GB RAM:
    imageimage

    Gut – wer weniger RAM hat, wird SQL beschränken, damit genügend Luft vorhanden ist. Mit SSD und echter Hardware hat man dann eben eine Performance, die wirklich Spaß macht! Hardwareschäden werden innerhalb von 2h ersetzt – für mich ist das okay.

    Was mich an diesem Vortag aber wirklich gestört hat: “Auf 2 Azure VMs kann man 10.000 aktive Kollaborations-User bedienen”. Hoffentlich bekommt so eine Aussage kein Kunde in den Hals! So ein Schwachsinn.

    Es ist sehr wichtig, dass man die Limits von SharePoint kennt. Mein Kollege Jochen Funk, mit dem ich gerade an einem spannenden Projekt tüftele, wird auf dem ShareCamp in München einen Vortrag hierzu halten. Ich kann leider nicht zuhören – bin in Arizona.

    Am Do. 7.3 bin ich auf der Cebit um mir die Stände von Microsoft, Alfresco, IBM  & Co. anschauen.  Dann gibt’s den nächsten Post. Ich werde diese vergleichen, die Unterschiede aufzeigen und natürlich wieder meinen Senf dazugeben Smiley.

    Ich wünsche gute Hardware, einen schnellen SharePoint & Freundliche Grüße,

    Tobias Wolter