Neuerstellung eines Master Keys im Secure Store nicht moeglich


Heute bin ich mal wieder ueber ein komisches Problem gestossen. Ich habe versuct, einen neuen Master Key fuer den Secure Store zu erstellen. Lustigerweise bekam ich immer wieder dieselbe Meldung:

Failed to generate/refresh key due to error:Secure Store Service did not performed the operation.

Auch die folgenden Meldungen sagten nicht viel aus:

The Secure Store Service application Secure Store Service Proxy is not accessible. The full exception text is: A previously issued token has not expired. New token will not be issued till the previously issued token expires.

und

Unexpected exception from endpoint address : https://<server&gt;:32844/61aa03399387449d9ba88aaa0715b633/SecureStoreService.svc/https

 

Ich hatte noch nie Probleme damit gehabt, und musste danach feststellen, dass es sich um ein simples Security Problem handelte. Der Account, welcher den Key erstellen will, brauch full access zur Secure Store Service Application.

SecStoreSettings

 

 

 

 

 

 

 

 

 

 

Danach war es kein Problem mehr
So long, Samuel

Business Connectivity Database is in compatibility range and upgrade is recommended -en-


Since SharePoint 2013 Public Update March 2013 there is a problem in Central Admin -> Manage Databases Upgrade Status where the Business Connectivity Database shows, that it is in compatibility Range and Upgrade is recommended.

DB_BDCUpgradeNeeded

Normally you can use PSCONFIG.EXE -cmd upgrade -inplace b2b (found in the c:\program files\common files\microsoft shared\webserver extensions\15\bin) to upgrade any database in compatibility mode. Also the Upgrade-SPContentDababase Command would be handy, if it was a Content Database. As in our scenario nothing of it works, I did some investigation and found, that it could be done with the Provision() method of the SharePoint API. There it states:

Weiterlesen

Mehrsprachigkeit für SharePoint 2013 mit Fokus “Collaboration”


In einem aktuellen projekt haben wir uns gefragt, wie wir in einem Kollaborativen Umfeld einige Seiten mit Mehrsprachigkeit versehen können. Wie in unserem Beispiel die Collaboration Community, die einerseits Informationen in D, FR und IT beinhaltet, jedoch im Grossteil entweder in der Corporage Language, oder in einer jeweiligen Landessprache, wenn alle Beteiligten die Sprache beherrschen. Es kann auch mal gemischter Content sein, Collaborative eben.

Natürlich könnten wir Variations benutzen, das wäre das naheliegende. Aber dann wäre die Diskussion in der Community auch getrennt, und dass will man ev. nicht. Ausserdem extra eine Publishing Seite machen, schien mir nicht zielführend, da es sich eben um eine Kollaborative seite handelt. SharePoint 2013 macht es mir ja einfach, Script Blöcke einzubauen, also hab ich mir überlegt, ob es nicht mit Javascript klappen könnte, die Browsersprache raus zu popeln und anhand dieser auf Sprachseiten (aspx Wikipages) zu routen. Nach ein paar Anläufen, mit tollen Hilfe von Thorsten Hans und Kevin Mees ist es uns dann gelungen, einen entsprechenden Script zu bauen.

Die Funktionsweise ist ziemlich simpel. Die Homepage der Community ist eine leere Seite, welche nur Javascript enthält und anhand der Browsersprache auf die richtige Home Seite verzweigt. Die sprachabhängigen Homeseiten wiederum enthalten zum Einen Text in der jeweiligen Sprache aber auch wiederverwendbare Elemente wie z.B. die Community Members. So haben wir dieselbe Datenbasis mit mehrsprachigen Info-Seiten.

Weiter war uns wichtig, dass de-ch, de-de, de-at oder fr und fr-ch gleich behandelt werden, und auch da haben wir eine Lösung gefunden. Wir beachten einfach die ersten zwei Zeichen.

Als Sahnehäubchen sind Wikipages ja eben Wikipages, und auf jeder Sprachseite implementieren wir noch DE | [[Community-Home-fr|FR]] | [[Community-Home-it|IT]] damit jederzeit auf eine andere Sprache umgeschaltet werden kann.

Multi Language Support

Und natürlich hier der Javascript, welcher verwendet wurde um auf die Sprachseiten (Wikipages) zu verzweigen

var browserLanguage = window.navigator.userLanguage || window.navigator.language;
var redirectTo = "/topic/collaborationcommunity/SitePages/Community-Home-de.aspx";
switch (browserLanguage.substring(0,2)) {
  case "de":
  break;
  case "fr":
  redirectTo ="/topic/collaborationcommunity/SitePages/Community-Home-fr.aspx";
  break;
  case "it":
  redirectTo ="/topic/collaborationcommunity/SitePages/Community-Home-it.aspx";
  break;
  default:
  break;
}
window.location = redirectTo;

Nicht jeder Browser ist gleichschnell, z.B. der IE ist mit Javascript langsam, und es dauert eine halbe Sekunde bis der Redirect erfolgt. Chrome sieht man keinen switch.

Für die langsamen Browser haben wir noch die allgemeinen elemente auf die Home Seite gepackt, und per loading gif ein asynchrones Laden der Seite simuliert.

loading

Das sieht dann so aus:

CommunitySwitch

So sind die User glücklich, auch wenn der Browser eine halbe Sekunde zum umschalten braucht, und wir haben eine sehr einfache und günstige Lösung für diese Bereiche einer Kollaborationsplattform, die eben ggf. trotzdem Mehrsprachig sein sollen.

So long, Samuel

Was fehlt eigentlich in Office 365 gegenüber on Premise?


Office 365 bzw. SharePoint 2013 Online vs. SharePoint 2013 on Premise. Genau diese Frage habe ich mir gestellt, und bin in einer Übersicht auf dem Technet fündig geworden. Grundsätzlich ist es nicht diese Gegenüberstellung, doch ich habe mir die Mühe gemacht, herauszupopeln, was denn nun von den Features in Office 365 bzw. SharePoint Online gegenüber der On Premise Version fehlt. Ich habe einfach die Features genommen, die im Online NO oder N/A haben, das ergibt den GAP zu on Premise. Natürlich sind einige davon „reine“ Admin Features, aber es hat doch ein paar gewichtige darunter, wie das Content Cross Site Publishing.

Hier die Liste: (vom Original: http://technet.microsoft.com/en-us/library/jj819267.aspx)

Feature Availlable in   O365
No
Custom Site Provisioning No
No
N/A
N/A
N/A
N/A
N/A
No
N/A
N/A
Quota Templates N/A
Read-Only Database Support N/A
Remote Blog Storage N/A
Request Management N/A
Request throttling N/A
Resource throttling N/A
N/A
N/A
N/A
Streamlined Central Administration N/A
System Status Notifications N/A
Unattached Content Database Recovery N/A
Upgrade evaluation site collections No
Usage Reporting and Logging No
No
N/A
PowerPoint Automation Services No
No
WCM: Catalog No
WCM: Cross-site publishing No
No
WCM: Image Renditions No
No
No
Word Automation Services No
No
No
No
Content Search Web Part No
No
No
No
No
Search connector framework No
No
No
No

So long, Samuel

Aus dem Alltag: Fehler beim Erstellen des BI Centers


Wenn Sie ein BI Center aus SharePoit 2013 erstellen wollen, müssen zwei Bedingungen erfüllt sein.

  1. Das Publishing Feature muss in der Site Collection aktiviert sein
  2. Performance Point muss aktiviert sein.

Fehlt das Publishing, so gibt SharePoint eine klare Ansage, dass Publishing fehlt. Beim Performance Point Feature erscheint eine allseits beliebte SharePoint Meldung:

Dependency feature ‚PPSMonDatasourceCtype‘ (id: 05891451-f0c4-4d4e-81b1-0dabd840bad4) for feature ‚BICenterDataConnections‘ (id: 3d8210e9-1e89-4f12-98ef-643995339ed4) is not activated at this scope.

Super, damit kann ich ja wiedermal viel anfangen Trauriges Smiley. Aus diesem Grund dieser Blogpost, Perfromance Point Feature aktivieren und los geht’s.

image

image

image

image

So long, Samuel

Probleme bei der Installation von SharePoint (Configuration Database Fail)


Problem

Wieder einmal in meinem SharePoint Leben bin ich auf ein neues Problem gestossen. Beim laufen lassen des Configuration Wizzards hatte ich folgende Fehlermeldung:

Failed to create the configuration database.
An exception of type System.Collections.Generic.KeyNotFoundException was thrown. Additional exception information: The given key was not present in the dictionary.
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
at System.ThrowHelper.ThrowKeyNotFoundException()
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at Microsoft.SharePoint.Utilities.SPUtility.GetUserPropertyFromAD(SPWebApplication webApplicaiton, String loginName, String propertyName)
at Microsoft.SharePoint.Administration.SPManagedAccount.GetUserAccountControl(String username)
at Microsoft.SharePoint.Administration.SPManagedAccount.Update()
at Microsoft.SharePoint.Administration.SPProcessIdentity.Update()
at Microsoft.SharePoint.Administration.SPApplicationPool.Update()
at Microsoft.SharePoint.Administration.SPWebApplication.CreateDefaultInstance(SPWebService service, Guid id, String applicationPoolId, SPProcessAccount processAccount, String iisServerComment, Boolean secureSocketsLayer, String iisHostHeader, Int32 iisPort, Boolean iisAllowAnonymous, DirectoryInfo iisRootDirectory, Uri defaultZoneUri, Boolean iisEnsureNTLM, Boolean createDatabase, String databaseServer, String databaseName, String databaseUsername, String databasePassword, SPSearchServiceInstance searchServiceInstance, Boolean autoActivateFeatures)
at Microsoft.SharePoint.Administration.SPWebApplication.CreateDefaultInstance(SPWebService service, Guid id, String applicationPoolId, IdentityType identityType, String applicationPoolUsername, SecureString applicationPoolPassword, String iisServerComment, Boolean secureSocketsLayer, String iisHostHeader, Int32 iisPort, Boolean iisAllowAnonymous, DirectoryInfo iisRootDirectory, Uri defaultZoneUri, Boolean iisEnsureNTLM, Boolean createDatabase, String databaseServer, String databaseName, String databaseUsername, String databasePassword, SPSearchServiceInstance searchServiceInstance, Boolean autoActivateFeatures)
at Microsoft.SharePoint.Administration.SPAdministrationWebApplication.CreateDefaultInstance(SqlConnectionStringBuilder administrationContentDatabase, SPWebService adminService, IdentityType identityType, String farmUser, SecureString farmPassword)
at Microsoft.SharePoint.Administration.SPFarm.CreateAdministrationWebService(SqlConnectionStringBuilder administrationContentDatabase, IdentityType identityType, String farmUser, SecureString farmPassword)
at Microsoft.SharePoint.Administration.SPFarm.CreateBasicServices(SqlConnectionStringBuilder administrationContentDatabase, IdentityType identityType, String farmUser, SecureString farmPassword)
at Microsoft.SharePoint.Administration.SPFarm.Create(SqlConnectionStringBuilder configurationDatabase, SqlConnectionStringBuilder administrationContentDatabase, IdentityType identityType, String farmUser, SecureString farmPassword, SecureString masterPassphrase)
at Microsoft.SharePoint.Administration.SPFarm.Create(SqlConnectionStringBuilder configurationDatabase, SqlConnectionStringBuilder administrationContentDatabase, String farmUser, SecureString farmPassword, SecureString masterPassphrase)
at Microsoft.SharePoint.PostSetupConfiguration.ConfigurationDatabaseTask.CreateOrConnectConfigDb()
at Microsoft.SharePoint.PostSetupConfiguration.ConfigurationDatabaseTask.Run()

Lustigerweise war die ConfigDB aber vorhanden:

Ursache

Die Fehlermeldung lässt den Schluss zu, dass das Problem offenbar nicht in SharePoint liegt. (at Microsoft.SharePoint.Utilities.SPUtility.GetUserPropertyFromAD(SPWebApplication webApplicaiton, String loginName, String propertyName)).
Ausserdem hat es wohl mit den Managed Accounts zu tun (at Microsoft.SharePoint.Administration.SPManagedAccount.GetUserAccountControl(String username))

Nach etwas Suchen, fand ich heraus, dass es sich um Probleme mit den Read Berechtigungen im Active Directory handelt.

Lösung

Offensichtlich hat Ihr AD Administrator entschieden, nicht alle Attribute freizugeben. Gehen Sie zur Lösung wie folgt vor:

  1. Lassen Sie eine AD Gruppe erstellen
  2. Alle managed Accounts (Farm, Services, Crawl, WebAppPool) in die Gruppe einfügen
  3. Die Gruppe auf Domain Ebene mit Read all Attributes berechtigen

Danach funktioniert die Installation.

so long, Samuel

User direkt zur Benachrichtigungsfunktion senden


Kennen Sie das Szenario?

Sie möchten gerne, dass sich die User Company News abonieren, damit alle Mitarbeitenden direkt informiert werden, wenn es neue Mitteilungen auf dem Intranet gibt. Nun muss man ihnen heute erklären, wie sie (z.B. im Falle eines Blogs, welcher sich super zum Erfassen von News eignet) sich mühsam zur Liste der Posts navigieren und dort ihre Alerts einstellen müssen. Dies kann ganz einfach umgangen werden, indem Sie den Usern den direkten Link auf die News Abonierung zur Verfügung stellen.

In der Layoutsfolder gibt es die Standardseite SubNew.aspx, die für die Erfassung von Benachrichtigungen vorgesehen ist. Nachfolgend eine Beschreibung, wie man nun den Link zusammenschustert:

Wir brauchen also als erstes den Link zu dieser Seite: http://www.yourdomain.com/managedpath/sitecollection/site/_layouts/SubNew.aspx

Als nächstes wird als Parameter die Listen ID übergeben, in der Notation: ?List={BDE4649E-0825-4E6A-B931-638844C43BFF}

Die ID in den Klammern {} ist die List ID der Liste oder Bibliothek, für welche Sie die Benachrichtigung erstellen wollen. Sie erhalten die ID, indem Sie in die Listeneinstellungen gehen, und dann sehen Sie die ID der Liste im Link.

image

Der Link sieht z.B. dann so aus: “http://www.sharepointcommunity.ch/tt/_layouts/listedit.aspx?List=%7BBDE4649E%2D0825%2D4E6A%2DB931%2D638844C43BFF%7D” wobei Sonderzeichen natürlich uminterpretiert werden müssen: %7B={ und %2D= und %7D = } Die ID der Liste ist somit: {BDE4649E-0825-4E6A-B931-638844C43BFF}

Damit der User bei Cancel oder nach einem Klick auf OK nicht zu der Liste zurückgeführt wird, hängen wir der URL noch ein Ziel an, wo der User danach landen soll, in der Notation: &Source=/managedpath/sitecollection/site

Das wars, nun haben wir zusammengesetzt den gesamten Link: http://yourdomain.com/managedpath/sitecollection/site/_layouts/SubNew.aspx(List={BDE4649E-0825-4E6A-B931-638844C43BFF}&Source=/managedpath/sitecollection/site

Mit dem Schnellstart oder als Eintrag in einer Hyperlink Liste können sie so von überall her dem User die Möglichkeit geben, sich auf eine beliebige Liste zu subscriben.

So long, Samuel

Aus dem Alltag: Popup Fenster beim öffnen von Dateien


Problem

Wenn Sie PDF Dateien aus dem Internet Explorer öffnen wollen, erscheint eine Meldung, ob Sie die Datei bearbeiten oder schreibgeschützt öffnen wollen. Es macht hier natürlich keinen Sinn, da PDF Dateien so wie so nicht bearbeitet werden.

image

In das selbe Schema fällt die Meldung, dass einige Dateien auf dem Computer Schaden anrichten können. Sie erhalten dann die folgende Meldung:

Einige Dateien können auf dem Computer Schaden anrichten. Öffnen Sie die Datei nicht, wenn Ihnen die Dateiinformationen verdächtig vorkommen oder Sie die Herkunft als nicht vertrauenswürdig einstufen.

image

Ursache

Jedes Dokument wird standardmässig mit dem AddOn “SharePoint OpenDocuments Class” geöffnet, was diese Sicherheitswarnung bzw. die Frage nach “Bearbeiten oder Schreibgeschützt” auslöst.

image

Lösung

Um diese Meldungen zu vermeiden, muss man das jeweilige Dateiformat anweisen, NICHT durch dieses AdOn geöffnet zu werden. Dies tut man auf dem Frontend Server (bei Multi-Frontend-Server Szenarios auf jedem Frontend-Server) im 14 Hive.

Navigieren Sie auf dem Frontend-Server zum Pfad: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\XML

Öffnen Sie die Datei DOCICON.XML und fügen Sie den Dateitypen, welche Sie direkt ohne Meldung öffnen wollen, den folgenden Text hinten an: OpenControl=“”

image

Übrigens: Genau hier geben Sie den Dateiendungen auch ihre ICONS, wenn Sie PDF Dateien oder LNK bzw. URL Dateien freigeben, können Sie hier die Bilder hinterlegen.

  • Bildgrösse 16×16 px
  • Pfad, unter dem die Bilder abgelegt werden: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\IMAGES

Beachten Sie auch die weiteren Posts, die mit dem PDF Handling auf SharePoint 2010 zusammenspielen:

So long, Samuel

Aus dem Alltag: PDF Dateien Öffnen nicht trotz richtiger WebApp Einstellungen im Browser File Handling


Problem

Wie im letzten Beitrag gezeigt, gibt es eine Web Application Level Einstellung für die Problematik, dass PDF Dateien aus SharePoint 2010 nicht geöffnet werden können. Was aber tun, wenn trotz der richtigen Einstellungen im Browser File Handling immer noch die Meldung kommt, Sie sollen die PDF Datei speichern?

Ursache

Es deutet alles darauf hin, dass SharePoint irgendwo ein Setting hat, welches über das GUI nicht erreicht werden kann. Und genau so ist es. Es gibt ein Listpropperty, welches “BrwoserFileHandling” heisst. Dies kann ebenfalls Strict oder Permissive sein.

Lösung

Setzen Sie das Propperty mittels Powershell:

$web = Get-SpWeb(“http://YourWebSite”)
$list = $web.GetList(“http://YourWebSite/ListName”)
$list.BrowserFileHandling

Danach sehen Sie, ob die Einstellung “Strict” oder “Permissive” ist. Nun stellen Sie sicher, dass die Einstellung “Permissive” ist:

$list.browserfilehandling = “Permissive”
$list.update();

Jetzt sollte aus dieser Bibliothek die PDF Datei direkt öffnen.

Diese Einstellung müsste nun für alle Dokumentenbibliotheken gesetzt werden, wenn es nicht da Power Shell gäbe. Sie haben eine ganze SiteCollection die Sie umstellen wollen? Kein Problem, nutzen Sie diesen Code:

PowerShell
  1. $input = ReadHost „Bitte SiteCollection angeben“;
  2. $lib = ReadHost „Bitte DokLib Name eingeben (z.B. Dokumente):“;
  3. $site = GetSpsite(„$input“);
  4. foreach($web in $site.AllWebs)
  5. {
  6.   foreach($list in $web.lists)
  7.   {
  8.     if($list.title match „$Lib“)
  9.     {
  10.       if($list.browserfilehandling eq „Strict“)
  11.       {
  12.         $bfhold=$list.browserfilehandling;
  13.         $list.browserfilehandling = „Permissive“;
  14.         $list.update();
  15.         WriteHost $web.url, $list,$list.browserfilehandling
  16.       }
  17.     }
  18.   }
  19. }

und hier noch der “Oneliner” für die PS Commandline:

$input = Read-Host „Bitte SiteCollection angeben“;$lib = Read-Host „Bitte DokLib Name eingeben (z.B. Dokumente):“;$site = Get-SpSite(„$input“);foreach($web in $site.AllWebs) {foreach($list in $web.lists){if($list.title -match „$Lib“){if($list.browserfilehandling -eq „Strict“){$bfhold=$list.browserfilehandling;$list.browserfilehandling = „Permissive“;$list.update();Write-Host $web.url, $list,Alt: ,$bfhold, Neu: ,$list.browserfilehandling}}}}

So long, Samuel

Aus dem Alltag: Probleme beim Öffnen von PDF Dateien aus SharePoint 2010


Problem

PDF Dateien können nicht direkt aus dem Browser geöffnet werden, es erscheint eine Meldung, man solle die Datei speichern. (Achtung, bei IE9 bzw. IE8 gibt es Unterschiede in der Darstellung)

image

Ursache

SharePoint ist so eingerichtet, dass Drittanbieter Dateien, also Dateien welche nicht aus dem Microsoft Office System stammen, nicht direkt aus SharePoint 2010 geöffnet werden können. Dies ist eine Webapplikationseinstellung und kann nur vom Administrator geändert werden.

Lösung

Navigieren Sie zur Zentraladministration, dann klicken Sie auf Application Management und dort auf Manage Webapplicatons

image

Klicken Sie die Webapplikaton an, auf welcher Sie die Einstellung ändern möchten und danach auf “General Settings”

image

Von da aus scrollen Sie nach unten, suchen die Einstellung “Browser File Handling” und stellen diese auf “Permissive”

image

Von nun an können Sie PDF Dateien und alle Drittanbieterdateien direkt aus SharePoint 2010 öffnen.

So long, Samuel