SAP Lumira Server for Teams (LS4T) n’est plus à vendre …

SYNTELL est une firme spécialisé dans le BI depuis 30 ans. Nous accumulons de l’expérience sur les différentes plates-formes libre-service disponibles sur le marché. Les leader du marché sont Microsoft Power BI ainsi que Tableau.

Nous avons récemment fait une étude comparative avec l’offre de SAP : Lumira.

L’outil SAP Lumira Desktop est simple à comprendre : c’est une application Windows écrite en Java 7 et elle permet d’importer des données à partir de fichiers ou bases de données relationnelles. Le programme place alors ces données dans son engin “in-memory” pour obtenir des performances optimales. Un fichier *.lums contient à la fois les données, les transformations ETC sur ces données, les relations entre les “datasets”, les visualisations et les tableaux de bord / récits. Il est possible de s’échanger ces fichiers via un répertoire partagé.

Mais lorsque vient le temps d’avoir un portail sécurisé afin de partager, via un portail Web, le travail accompli dans SAP Lumira Desktop, l’offre de SAP est tout à fait confuse et s’adresse surtout aux moyennes et grandes organisations. En octobre 2015, l’article “Hello SAP Lumira Server for BI Platform. Goodbye SAP Lumira Server for HANA and SAP Lumira Cloud.” annonçait la mort de SAP Lumira Server for HANA et SAP Lumira Cloud :

SAP-Lumira-Server-platform-opties

Il ne restait alors que Lumira Server for Teams (LS4T) ou Lumira Server for BI platform. Mais voilà, que contrairement à ce que le site Web de SAP peut laisser mirroiter (24 mars 2017),  LS4T n’est plus disponible pour l’achat. Auparavant, cela permettait aux petites organisations d’acheter une solution facile à mettre en place pour partager leurs analyses SAP Lumira.

image

Alors l’offre actuelle de SAP pour Lumira Server ressemble maintenant à ceci :

image

Lumira Server for BI Server fait partie de SAP BusinessObjects BI qui a deux versions : Edge ou Entreprise.

image

Impossible d’obtenir même un intervalle de prix pour ces deux “packages”.  Pour les petites organisations il serait peut-être préférable d’échanger les fichiers *.lums via un répertoire partagé (et sécurisé) ou un portail Web gratuit comme SharePoint Foundation. Ce n’est pas vraiment idéal …

Microsoft Power BI permet de publier dans les nuages (www.powerbi.com – plan gratuit ou 10 USD/mois/utilisateur) tandis que Tableau a une offre “On-premises” (Tableau Server – 10 000 USD) ou dans les nuages (Tableau Online 500 USD/année/utilisateur). Pour ce qui est de SAP Lumira, seules les organisations ayant fait l’acquisition de SAP BusinessOjbects BI connaissent les coûts …

Mon opinion est que pour faciliter l’adoption des outils de libre-service BI, il faut éliminer le plus possible de friction entre l’utilisateur et la technologie. Je pense que SAP gagnerait à clarifier son offre et devrait considérer les petites organisations sans son offre Lumira. Autrement, seules les organisations ayant déjà la plate-forme BI de SAP vont envisager d’utiliser SAP Lumira. Et rien ne les empêche d’utiliser plutôt Microsoft Power BI ou Tableau …

Beaucoup d’actions dans Reporting Services 2016

Je suis de retour d’un mandat à temps plein de juillet à décembre à la ville de Québec. En plus de faire de l’analyse organique j’étais aussi responsable du développement en Microsoft Windows Presentation Framework (WPF), Entity Framework avec de la communication réseau TCP et du multi-threading. C’était dans le cadre du projet du Gestionnaire Artériel de la ville de Québec.

Pendant mon absence, il s’est passé beaucoup de choses du côté de Reporting Services. D’ici à ce que j’aie plus de temps, voici quelques liens:

Microsoft Business Intelligence – our reporting roadmap
SQL Server 2016: Everything built-in
Position report parameters the way you want
A closer look to report parameters position
Report rendering for modern browsers
Integrate Reporting Services into SharePoint 2016
Introducing mobile reports and a brand-new web portal
How to create Mobile Reports and KPI’s in SQL Server Reporting Services 2016 An end-to-end walkthrough
Download Microsoft® SQL Server® 2016 CTP3.1 Report Builder
Download Microsoft SQL Server Mobile Report Publisher (Public Preview 1)

Je devrais retrouver du temps pour garder ce blogue en vie,

BI personnel vs BI d’entreprise

Ma référence personnelle en tout ce qui a trait à Reporting Services (Teo Lachev) vient de publier un billet qui décrit le BI personnel (Microsoft Power Pivot For Excel / SharePoint) vis-à-vis le BI d’entreprise (cubes SSAS, rapports SSRS).

Je partage son opinion sur le fait que le BI personnel est là pour compléter le BI d’entreprise. C’est plus flexible et ça encourage l’exploration des données mais ça demande des compétences techniques et du temps.

Allez lire son blogue (en anglais)!

Présentation de notre outil de test automatisé pour Reporting Services

Tel que promis, voici donc une présentation visuelle de notre outil nommé Syntell QA SQL Server Tester.

Tout d’abord, voici le modèle de données (vision de haut niveau):

image

Bref, un jeu d’essai définit une liste d’hyperliens vers des rapports SSRS. Ceux-ci peuvent provenir d’un ou plusieurs sites SharePoint et être exécutés avec des valeurs spécifiques pour les paramètres.

Lorsqu’on exécute un test, c’est au niveau d’une instance de jeu d’essai. On peut utiliser notre identité Windows ou bien configurer l’instance de manière à utiliser un autre utilisateur.

Une fois l’outil démarré il faut créer une base de données servant à héberger les tables utilisées par l’outil.

image

Il suffit d’entrer le nom de la base de données à créer et l’outil fait le reste.

L’application permet de saisir plusieurs comptes utilisateurs avec lesquels on voudra éventuellement faire des tests. Ces informations sont stockées encryptées dans la base de données (via un mot de passe défini par l’utilisateur et choisi lors de la connexion à la base de données).

image

Il suffit ensuite de créer un jeu d’essai. La manière la plus simple d’ajouter des urls à celui-ci est de les importer directement à partir des journaux de SSRS. Cette journalisation est activée par défaut et elle est stockée dans le base de données choisie lors de la configuration de SSRS (ex. ReportServer). Bref, il suffit de naviguer sur les bons rapports, avec les bons paramètres puis d’utiliser l’outil pour importer!

image

L’outil permet de filtrer par utilisateur, date et contenu. Il est possible de vérifier chacun des liens avant l’import.

Pour exécuter un jeu d’essai, il faut d’abord créer une instance de jeu d’essai et optionnellement entrer de l’information sur l’environnement de test (versions, spécifications matérielles etc.).

image

Même si les hyperliens ont été importés sur le serveur X, il est possible d’effectuer des substitution dynamiques afin de lancer le test ailleurs. Cela pourrait être utilisé à d’autres fins.

image

La console d’exécution permet de choisir l’identité avec laquelle le test doit s’exécuter, déterminer si on doit stocker le résultat ou non et même choisir un délai entre chaque exécution ou un nombre de threads à utiliser pour profiter des tous les cores du serveur!

En tout temps, le statut de l’exécution précédente s’affiche (succès ou échec) et les seuils configurables permettent de colorer la cellule indiquant la durée.

Chaque rapport est exécuté trois fois, une par format: MHTML, TIFF et XML.

image

image

image

image

En cas d’erreur, c’est plutôt le détail de l’exception qui est stocké.

image

Finalement, le programme est une application de type Console qui affiche l’interface graphique uniquement lorsqu’il n’y a aucun paramètre sur la ligne de commande.

Il peut donc être lancé par un script ou par le Windows Task Scheduler. Un fichier XML permet de définir les paramètres du test et indiquer quelle(s) instance(s) de jeu d’essai doivent être lancée(s).

image

Il reste plusieurs volets à développer dans cet outil mais ceci forme la base et permet d’automatiser les tests d’intégrité et même de réaliser une certaine forme de test de charge / performance.

Si vous avez des questions sur Syntell ou sur nos outils, n’hésitez pas à me contacter.

Pourquoi nous avons développé un outil de test automatisé pour Reporting Services

Cet article est le premier d’une série visant à présenter les différents outils développés par Syntell inc. afin d’augmenter notre productivité lors de la réalisation de projets BI sous la plate-forme de Microsoft.

Nous avions besoin d’un outil pour réaliser différents types de test sur la plate-forme Microsoft Reporting Services (SSRS):

  • D’intégrité
    Il n’y a pas d’erreurs lors de l’exécution d’un rapport
  • De non régression
    Ce qui fonctionnait fonctionne toujours (test comparatif)
  • De performance
    Permet d’identifier les rapports trop lents
  • Sécurité applicative et personnalisation
    Chaque utilisateur peut voir quelque chose de différent

Avant d’envisager le développement d’une solution maison, nous avons d’abord demandé à notre ami Google si cela n’existait pas déjà:

SSRS Automated Testing
http://consultingblogs.emc.com/stevewright/archive/2009/08/27/unit-testing-report-within-reporting-services-my-theory.aspx

SSRS unit testing suite
http://rsunit.codeplex.com/
http://www.innosphere.ca/Products/SSRSUnitTestingSuite/tabid/110/Default.aspx

Unit Testing SSRS Reports
http://colinramsay.co.uk/diary/2008/03/12/unit-testing-ssrs-reports/

Reporting Services unit testing
http://andrewbutenko.wordpress.com/2009/08/04/reporting-services-2008-unit-testing/

Les solutions présentées par ces différents blogues ne nous convenaient pas pour plusieurs raisons. Voici les principales:

  1. Les rapports que nous développons sont complexes, ont plusieurs paramètres et forment une application où le contexte est maintenu d’un rapport à l’autre.La création d’un jeu d’essai devait donc pouvoir être réalisée simplement en naviguant dans les rapports et en choisissant les bons paramètres (import à partir des journaux (logs) de Reporting Services.Comme il y a un grand nombre de paramètres, les rapports doivent être lancés en HTTP POST et non en HTTP GET. Lors d’une erreur, le détail n’est pas retourné en mode HTTP POST, l’outil doit donc utiliser les services Web d’exécution de rapport afin d’obtenir le détail de ce qui a échoué.
  2. L’intégration à Visual Studio ne faisait pas de sens pour nous car nous modifions fortement les rapports lors du déploiement (via un outil de déploiement permettant l’application d’une configuration propre à un client).Ce que nous voulons tester c’est le rapport tel que déployé dans SharePoint.
  3. L’outil doit pouvoir tester les performance et la charge. Il doit donc pouvoir lancer plusieurs rapports en parallèle (multithreading).
  4. Après l’exécution d’un jeu d’essai, le QA doit pouvoir consulter le statut de l’exécution de chaque rapport (succès/échec, date et heure, durée de l’exécution avec seuils pour alarmes) ainsi que de voir le résultat (MHTML, TIFF et XML) ou le message d’erreur.
  5. Afin de tester la sécurité applicative ou la personalisation de nos rapports, il faut que l’outil puisse lancer les rapports sous une autre identité configurable …
  6. L’outil doit pouvoir être lancé sur la ligne de commande afin d’automatiser des tests ou réchauffer un serveur avant une démonstration (programme hybride Console / Windows Forms).

Comme les solutions proposées ne pouvaient pas répondre à ces exigences, nous avons développé un outil en .NET 4.0 et LINQ to SQL.

Les cas d’utilisation (use case) principaux étaient les suivants:

Besoin Fonctionnalité de l’outil
Vérifier qu’aucun rapport ne retourne d’erreur  Visualisation du statut de chaque exécution
S’assurer qu’aucun rapport n’est trop lent  Seuils configurables pour mettre en évidence les exécutions plus lentes (2 seuils)
Réchauffer un serveur SSRS avant de faire une démonstration Le programme peut s’exécuter en mode console et prendre ses paramètres dans un fichier XML
Voir comment un serveur réagit à la charge Il y a un mode multithread permettant de bombarder un serveur avec une seule instance du programme.
Utiliser une identité spécifique pour exécuter les rapports L’outil permet de stocker l’information de connexion de plusieurs utilisateurs de manière sécuritaire dans la base de données et de les associer à une instance de jeu d’essai.
Exécuter un jeu d’essai sur un autre serveur que celui où le jeu d’essai a été créé / importé Fonctionnalité de recherche / remplacement dynamique pour les instances de jeu d’essai.
Importer les hyperliens à partir des journaux natifs de SSRS La boîte de dialogue d’import permet de filtrer par utilisateur, date, et texte de l’hyperlien. Définir un jeu d’essai est aussi simple que de naviguer sur l’application SSRS puis importer les hyperliens avec la fonction d’import.
Créer une base de données pour héberger des tests individuels L’outils a une fonction pour créer automatiquement la base de données SQL Server et le schéma. Le processus est le même que pour l’ouverture d’une base de données existante à l’exception près qu’il faut taper le nom de la base de données à créer.
Visualiser le résultat d’une exécution précédente dans différents formats Si l’option pour stocker les résultat est activée, l’outil sauvegarde (et permet de visualiser) les rapports en MHTML, TIFF et XML.

Mon prochain article vous présentera l’outil de manière plus visuelle mais voici toujours une capture d’écran:

clip_image001

Si vous avez des questions sur Syntell ou sur nos outils, n’hésitez pas à me contacter.

Kerberos est bien configuré mais votre SSRS ne marche pas en mode distribué

La manière la plus facile d’intégrer SSRS à SharePoint est de l’installer sur le même serveur que celui utilisé par SharePoint (WSS ou MOSS).

Cependant, il peut être plus logique, plus performant, plus flexible dans l’avenir d’installer SSRS sur un autre serveur. Par exemple, le mode Scale-Out de la version Enterprise permet d’avoir plus d’un serveur Reporting Services pour une ferme SharePoint.

Vous décidez d’aller de l’avant avec une installation distribuée sur deux ordinateurs :

clip_image001[6]
Source : How to: Install and Configure SharePoint Integration on Multiple Servers
http://msdn.microsoft.com/en-us/library/bb677365.aspx

Vous suivez les instructions correctement afin d’installer et configurer les bons logiciels sur les deux machines. Vous créez vos SPNs pour chaque service (SQL Server, SSAS, SSRS et SharePoint). Vous avez configuré la délégation Kerberos standard (unconstrained) ou spécifique (constrained).

Vous avez déployé un projet SSRS de test sur votre site SharePoint et cela fonctionne correctement quand vous naviguez localement (à partir du serveur #1).

Par contre, dès que vous tentez d’exécuter un rapport à partir d’un fureteur distant, vous obtenez l’erreur suivante :

Une erreur inattendue s’est produite au cours de la connexion au serveur de rapports. Vérifiez que le serveur de rapports est disponible et configuré pour le mode SharePoint intégré.

 

An unexpected error occurred while connecting to the report server. Verify that the report server is available and configured for SharePoint integrated mode.

clip_image003[5]

Vous lisez sur la sécurité SSRS en mode SharePoint  et suivez leur recommandation:
image
Source: Security Overview for Reporting Services in SharePoint Integrated Mode
http://msdn.microsoft.com/en-us/library/bb283324.aspx

Quelques points dignes de mention:

Et là vous ne comprenez pas pourquoi ça ne marche toujours pas … Vous êtes en train de vous demander si votre installation est corrompue et vous vous apprêtez à tout réinstaller. Continuez à lire!

En utilisant l’outil WireShark et en utilisant « kerberos » comme filtre, je pouvais voir passer les AS_REQ, AS_REP, TGS_REQ, TGS_REP qui passent entre les serveurs et le contrôleur de domaine. Dans mon cas, je ne voyais jamais la demande de délégation d’identité du compte de service SharePoint vers le SPN de SSRS.

Normalement, sur votre serveur #1 (SharePoint sans SSRS), vous devriez voir ce trafic Kerberos lors de l’exécution d’un rapport à partir d’un fureteur distant :

clip_image007[6]

Vous voyez que suite à la requête à RSViewerPage.aspx, il y a une demande (TGS-REQ) pour le service http/ms-sql2008r2.syntell.com qui est le site IIS du serveur SSRS. Si cette demande n’a pas lieu c’est que votre serveur SSRS n’est pas configuré pour fonctionner en mode Kerberos. La réponse (TGS-REP) devrait inclure l’identité de l’utilisateur qui a exécuté le rapport à partir d’un fureteur distant.

Un autre indice, dans l’observateur d’événements sur la machine SSRS, dans la section Sécurité, vous voyez une tentative d’authentification pour un utilisateur anonyme (ANONYMOUS LOGON).

clip_image009[5]

En plus de dire à IIS qu’il faut être en mode Negociate,NTLM il faut aussi le dire à ReportServer. C’est ce que j’ai découvert à la dure …

Ce dernier a un fichier de configuration (rsreportserver.config) situé ici :

C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\rsreportserver.config

Dans ce fichier il y a une section Authentication -> AuthenticationTypes qui doit être mise à RSWindowsNegotiate ou RSWindowsKerberos :

<Authentication>
<AuthenticationTypes>
<RSWindowsNegotiate />
</AuthenticationTypes>

La valeur par défaut dépend du compte de service qui a été mis initialement pour le service de SSRS. Normalement on met un utilisateur de domaine dès l’installation alors on se retrouve avec RSWindowsNTLM ce qui désactive l’utilisation de Kerberos avec SSRS …

Voyez par vous-même :

By default, the RSReportServer.config file includes the RSWindowsNegotiate setting if the Report Server service account is either NetworkService or LocalSystem; otherwise, the RSWindowsNTLM setting is used. You can add RSWindowsKerberos if you have applications that only use Kerberos authentication.

http://msdn.microsoft.com/en-us/library/cc281253.aspx

Et enfin ça marche!

clip_image011[6]

Références pour comprendre Kerberos et s’outiller pour diagnostiquer sa configuration

Lors du développement de solutions SSRS / PerformancePoint il est courant que l’environnement de développement soit en mode autonome, c’est-à-dire installé sur la même machine. C’est ce qui est le plus simple à configurer, on peut le faire dans une machine virtuelle et ainsi être en mesure d’en avoir une (VM) par combinaison de versions SQL Server, SSRS, PPS et SharePoint.

Aussi, ces environnements ne nécessitent pas une configuration utilisant les meilleures pratiques en termes de sécurité. Il est courant d’utiliser le même compte de service pour tous les services et pools d’applications et que ce compte soit administrateur du poste …

Cependant, lorsqu’arrive le moment de faire fonctionner le tout dans l’environnement du client, distribué sur plusieurs machines, utilisant des comptes de services ayant uniquement les droits requis, avec des pare-feu, c’est une autre paire de manche.

De plus, une difficulté supplémentaire s’ajoute dans les solutions BI : on veut que l’identité du client (dans le fureteur ou Excel) se rende jusque dans l’engin de cube (SSAS). Comme la solution est distribuée, on parle alors de délégation d’identité et donc de Kerberos.

Kerberos est un sujet en soi et il faut prendre le temps de comprendre c’est quoi, pourquoi on doit l’utiliser, quels droits cela exige lors de la configuration etc. J’ai regroupé dans ce billet de blogue toutes les références que j’ai accumulées dans mon Microsoft OneNote en me disant que cela pourrait certainement aider quelqu’un d’autre à commencer ses recherches à ce niveau.

Bonne lecture!

Ask the Directory Services Team

· What’s in a Token

· Kerberos for the Busy Admin

· Understanding Kerberos Double Hop

· Troubleshooting Kerberos Authentication problems – Name resolution issues

· Kerberos Authentication problems – Service Principal Name (SPN) issues – Part 1

· Kerberos Authentication problems – Service Principal Name (SPN) issues – Part 2

· Kerberos Authentication problems – Service Principal Name (SPN) issues – Part 3

· Fun with the Kerberos Delegation Web Site

· Negotiate security support provider behavior

· Addendum: Making the DelegConfig website work on IIS 7

· DelegConfig V2 Released

· Internet Explorer behaviors with Kerberos Authentication

Divers

· Kerberos – solution for double hop authentication

· Kerberos and Delegation Tips

Microsoft

· Kerberos Authentication in Windows Server 2003

· How to configure SQL Server 2008 Analysis Services and SQL Server 2005 Analysis Services to use Kerberos authentication

· You cannot configure the Negotiate or NTLM protocols for Windows Integrated Authentication in the IIS Manager for Internet Information Services (IIS) 7.0

· Maximum tolerance for computer clock synchronization

WindowsSecurity.com

· Troubleshooting Kerberos in a SharePoint environment (Part 1)

· Troubleshooting Kerberos in a Sharepoint Environment (part 2)

· Troubleshooting Kerberos in a Sharepoint Environment (part 3)