Unsere vier “Hidden Highlights” des Sitecore Symposiums 2018 in Orlando, Florida

Sitecore Community

comspace hat auch dieses Jahr wieder zwei Kollegen auf die weite Reise zum Sitecore Symposium geschickt. Nachdem die Folgen des Jetlags überwunden sind, möchten wir – das sind Friederike und Tim – mit diesem Beitrag unsere Eindrücke aus Orlando mit euch teilen. „Unsere vier “Hidden Highlights” des Sitecore Symposiums 2018 in Orlando, Florida“ weiterlesen

Team comspace auf der SUGCON 2018 in Berlin

Letzte Woche waren wir auf der SUGCON in Berlin. SUGCON steht für Sitecore Usergroup Conference. Gegründet in den Niederlanden ist die SUGCON nach 5 Jahren ein europäisches Event mit rund 600 Teilnehmern. Für mich war es nach Amsterdam und Kopenhagen die dritte Teilnahme und die SUGCON ist definitiv ein Highlight im Sitecore-Jahr! Man spürt einfach, dass es von der Community für die Community organisiert wurde und es sind Vortragende und Teilnehmer aus aller Welt da 🙂

„Team comspace auf der SUGCON 2018 in Berlin“ weiterlesen

JSON Service Provider for Data Exchange Framework

Endpoint JSON Service

Vor kurzem habe ich den JSON Service Provider for Data Exchange Framework auf GitHub veröffentlicht. Aber warum? Vielleicht hilft er euch beim Einstieg in die Entwicklung eines eigenen Providers oder dient sogar als Basis für euren eigenen Provider…
Und was kann der JSON Service Provider? Mittels dieses Providers können Daten aus einem beliebigen JSON REST Service ausgelesen werden, um dann beispielsweise mittels des Sitecore Provider for Data Exchange Framework an Contacts oder Items persistiert zu werden.
Zum leichteren Verständnis habe ich in dem GitHub-Repository einen vorkonfigurierten Demo Tenant zur Synchronisation der Jokes von https://api.chucknorris.io/ mitgeliefert. Zusammengefasst habe ich dort folgende Schritte durchgeführt:

1. Konfiguration Endpoint

Am Endpoint werden die Zugangsdaten zum JSON Service und die konkreten URLs zum Auslesen aller JSON-Objekte oder eines einzelnen Objekts (Token “{id}” wird im jeweiligen Pipeline Step durch definierten Identifier ersetzt) hinterlegt.
Endpoint JSON Service

2. Konfiguration Value Accessor mit JSONPath

Der lesende Zugriff auf die JSON-Attribute wird mittels JSONPath definiert, was maximale Flexibilität, auch für verschachtelte JSON-Objekte, bietet.
ValueAccessor mit JSONPath

JSON Path Beispiele

Auf das folgende JSON-Objekt 

{
 	"firstname":"Max",
     "lastname":"Mustermann",
	"addresses":
	[
		{
			"id": 7,
			"type": "Shipping",
			"street": "Bahnhofsstrasse 7",
			"city": "Bielefeld"
			"postalcode": "33333"
		},
        {
			"id": 13,
			"type": "Invoice",
			"street": "Hauptstrasse 7",
			"city": "Hamburg"
			"postalcode": "22222"
		}
	]
}
JSON-Beispiel

kann beispielsweise mit folgenden JSONPath Ausdrücken zugegriffen werden:
$.firstname ==> "Max"
$.addresses[?(@.type=='Invoice')].city ==> "Hamburg"
$.addresses[(@.length-1)].type ==> "Invoice"
JSON-Objekt

3. Sitecore Provider konfigurieren

  • Sitecore Endpoint anlegen
  • Ziel-Template “Joke” definieren
  • Value Accessor für die Felder des Joke-Templates konfigurieren

4. Value Mapping konfigurieren

Das Übliche halt… Id => ExternalId, Value => Text

5. Pipelines konfigurieren

Im Grunde handelt es sich hier um eine Basis-Konfiguration zum Import von externen Daten nach Sitecore.
ReadJsonObjectsStepProcessor
Die Pipeline “Sync Jokes” liest die Daten aus der externen Datenquelle und iteriert darüber.
Die Pipeline “Sync Joke” ermittelt das ggf. zum externen Identifier schon existierende Item in Sitecore, führt das oben konfigurierte Mapping aus und speichert das Sitecore Item.
Der im obigen Screen geöffnete Pipeline Step “Read Jokes” basiert auf dem mit dem Json Service Provider implementierten PipelineStep “ReadJsonObjectsStepProcessor”. Dieser erwartet den zu verwendenden Endpoint und optional einen JSONPath zur Ermittlung des Root-Knotens im JSON-Response.

6. Pipeline Batch starten

Jetzt müsst ihr nur noch den Pipeline Batch einrichten und ausführen. Idealerweise erhaltet ihr folgendes Ergebnis:
25.11.2017 18:22:50 INFO 8 json objects were read from endpoint. (pipeline step: 1 Read Jokes, endpoint: Chuck Norris Jokes API)
25.11.2017 18:22:51 INFO 8 elements were iterated. (pipeline: Sync Jokes – Pipeline, pipeline step: 2 Iterate Jokes)
Und ihr findet unterhalb von content/home die importierten Jokes, wie z.B.
“Wie viele Liegestütze schafft Chuck Norris? Alle.”

Zusammenfassung

Für das Setup dieses Demo Tenants habe ich ca. 1 Stunde benötigt. Zugegeben, es ist nicht die erste Anwendung des Providers meinerseits, aber in der Zeit hätte ich den Import nicht von Hand neu schreiben können.
Habt ihr Fragen dazu oder selber schon Erfahrung mit dem JSON Service Provider gemacht? Dann freue ich mich auf euer Feedback in einem Kommentar!

Sitecore Data Exchange Framework aus der Praxis

Sitecore Layer für Data Exchange Framework

Lesson Learned im Integration Bootcamp auf dem Symposium in Vegas: Das Data Exchange Framework wird DEF abgekürzt und nicht DXF, es heißt ja schließlich nicht Data Experience Framework 😉
Das hier wird kein DEF Tutorial, davon gibt es ausreichend. Eine erste Einordnung und hilfreiche Links zum Einstieg findet ihr in meinem letzten Post zu diesem ThemaMit dem aktuellen Beitrag möchte ich einfach meine Erfahrung aus der Arbeit mit dem DEF in den vergangenen Monaten mit euch teilen.
Die erste Implementierung eines Custom DEF Providers zum Im- und/oder Exportieren von Daten dauert mit Sicherheit länger als wenn ihr wie gewohnt einen Importer bzw. Exporter ohne das DEF schreiben würdet. Aber später führen kleinste Anpassungen dann fast immer zu einem zusätzlichen Implementierungsaufwand. Mit dem DEF können Attribut-Umbenennungen, Mapping-Anpassungen und Datenkonvertierungen einfach konfigurativ vorgenommen werden. Und mal ehrlich, die lästigen Quellcode-seitigen Attribut-Mappings ersparen wir uns ja auch sehr gerne…
Hinzu kommt: Ihr könnt euch eigene wiederverwendbare Provider schreiben, wie in meinem Fall ein generischer JSON Service Provider. Damit können wir JSON-Daten aus unterschiedlichen Quellen lesen und dann mittels des Standard Sitecore Providers in Contacts oder Items schreiben. Im Projekt ist dann nur noch der Endpoint, die zu lesenden Attribute und das Mapping zu konfigurieren und – falls für die Persistierung der Daten nötig – Template-Erweiterungen oder Contact-Facet-Erweiterungen zu implementieren.
Eine abgespeckte Version des JSON Service Providers könnt ihr euch auf Github anschauen, vielleicht hilft es ja beim ersten Einstieg.
Sitecore Layer für Data Exchange Framework

Und sonst?

Es ist ein Framework, es macht nicht unsere Arbeit, aber es ist ein tolles Werkzeug. Was uns noch an Funktionalität fehlt, können wir erweitern.
So haben wir z.B. den Sitecore Provider um eigene Pipeline Steps ergänzt:

  • UpdateWorkflow: Aktualisiert den Workflow Status eines Sitecore Items
  • CreateMediaItem: Erzeugt ein Sitecore MediaItem basierend auf einem Bildpfad
  • EnrollEngagementPlan: Schickt einen Sitecore Contact in einen Engagement Plan
  • AddItemVersion: Erstellt eine neue Item-Version

Und auch einen erweiterten ValueAccessor zum Lesen und Schreiben von beliebig verschachtelten Facet-Properties haben wir uns geschrieben. Wie ihr seht, nichts geht nicht 🙂

Wenn ich mir was wünschen dürfte (@Sitecore):

  • ReadSitecoreItemsStepProcessor: Der Dynamics CRM Connector liefert schon umfangreiche Möglichkeiten zur Filterung von Contacts im CRM, die Konfiguration ist auch schon teilweise global unter Framework eingeordnet, aber das DEF selbst und der Sitecore Provider bieten hier noch kaum Funktionalität um Sitecore Contacts oder Sitecore Items zu filtern.
    Wir haben das jetzt in unseren Projekten mittels eigens implementierter Erweiterung des Pipeline Steps möglich gemacht, das sollte aber m.E. OOTB kommen.
  • Das DEF stellt kein Konzept zum Löschen von Entitäten wie z.B. Contacts oder Items. Das wünsch ich mir für die Zukunft.

Mein Tipp an euch: Lasst euch vom ersten Eindruck nicht abschrecken, es ist anfangs etwas unübersichtlich und macht viel Konfigurationsarbeit. Aber wenn die ersten Schritte gemacht wurden, dann ist es gut zu wissen, wie einfach das DEF erweiterbar und wie flexibel es in der Konfiguration ist. Für die einfache Synchronisation von Daten würde ich immer das DEF in Betracht ziehen.

Sitecore Data Exchange Framework?

Sitecore Data Exchange Framework

In den letzten Wochen habe ich intensiv an der Implementierung eines Sitecore Celum Connectors gearbeitet. Celum ist ein Digital Asset Management System, als solches verwaltet es alle Assets zentral und liefert diese an diverse Kanäle aus – online oder auch für den Druck.
Da wir uns entschlossen haben, Bilder welche auf der Webseite zum Einsatz kommen, auch in Sitecore vorzuhalten, ist ein großer Part der Integration die Synchronisation der Bilder zwischen beiden Systemen. Beim Stichwort “Synchronisation” kam mir sofort  das im August von Sitecore veröffentlichte
Data Exchange Framework in den Sinn. Da ich damit bisher noch gar nicht gearbeitet habe, musste ich mich zunächst mal in den Umfang und die zugrunde liegende Philosophie dieses Frameworks einarbeiten. Die ersten theoretischen Ergebnisse möchte ich hier und jetzt mit euch teilen. In einem späteren Beitrag werde ich dann über meine ersten Erfahrungen aus der Praxis berichten.

Kurzdefinition

Das Data Exchange Framework dient der Verknüpfung zweier System welche Daten miteinander austauschen, es ist ein sog.  ETL-Tool.  In der Regel ist Sitecore eines der Systeme welches sich mit einem Drittsystem verbindet, das muss aber nicht so sein.

Einsatzmöglichkeiten

Zahlreiche Einsatzmöglichkeiten für das Data Exchange Framework sind denkbar. So kann das neue Framework etwa

  • Produkte > Sitecore Items
  • Externe Bilder > Sitecore Items
  • Kontakte > xDB Contacts
  • u.v.m.

verbinden. Der Einsatz kommt einfach immer dann in Frage, wenn Daten aus einem Drittsystem auch in Sitecore vorgehalten werden müssen.

Warum so ein Framework?

Noch ein Framework? Es gibt doch schon so viele Integrationen… Aber jeder Partner und jedes Modul findet seine eigene Lösungen.

Sitecore geht es mit dem Framework um eine einheitliche Anbindung, um Einfachheit, Stabilität und Wartbarkeit zu erreichen. Außerdem werden die Einstellungen, die sonst meist durch Entwickler in den entsprechenden Konfigurationsdateien vorgenommen werden (Tasks, Pipelines, Pipeline Steps), dann zukünftig als Sitecore Items konfiguriert.

Und das Beste, wie ich finde: auch das Attributmapping kann mit dem neuen Framework vollständig über die Oberfläche konfiguriert werden.

Sitecore Data Exchange Framework

Sitecore hat sich mit dem Framework folgende Ziele gesetzt:

  1. Einheitliches Modell zum lesen, schreiben und verknüpfen von Daten
  2. Flexibilität derzeitiger Ansätze beibehalten (aber nicht nur für Entwickler)
  3. Entwicklung eines Providers nicht nur für langjährige Sitecore-Experten ermöglichen.

Sitecore selbst hat auch schon erste Provider für Data Exchange Framework implementiert: Dynamics CRM Connect (Contacts, Entities), Dynamics AX (Product Catalog).

Genau solche Provider werden wir als Sitecore Partner dann zukünftig gegen die APIs der Drittsysteme unserer Kunden entwickeln. Das Mapping der Daten übernimmt dann das Sitecore Data Exchange Framework für uns.

Und was ist eigentlich das xConnect?

Sitecore hat auf dem Symposium 2016 in New Orleans das xConnect Framework für Anfang nächsten Jahres angekündigt. Beim xConnect Framework geht es um die Integration von Daten aus Drittsystemen in die Sitecore xDB. xConnect beinhaltet nicht das Attributmapping selbst, dafür ist wiederum das Data Exchange Framework zuständig.

Neugierig geworden?

Dann möchte ich euch folgende Links ans Herz legen:

  • Webinar mit Adam Conn (Director of Technical Product Management): Intro to Data Exchange Framework
  • Dokumentation Data Exchange Framework inkl. Schritt für Schritt Anleitung für die Implementierung eines eigenen Data Providers.
  • Und eine Beispielimplementierung eines File System Providers (CSV) bei GitHub .

So das war’s erstmal von mir. Jetzt tauche ich in die Umsetzung eines eigenen Data Providers ab. Ich bin gespannt…

Kürzlich in New Orleans – Rückblick Sitecore Symposium 2016

Sitecore Symposium 2016 New Orleans

Ich hatte das Glück und durfte dieses Jahr zum Sitecore Symposium nach New Orleans reisen. Mit allen, die nicht dabei sein konnten, möchte ich hier meine Highlights teilen.
Es war wieder mal ein Spitzen Event – und Sitecore ein großartiger Gastgeber. Zunächst zur Location: was für eine tolle Stadt, so lebendig, offen und musisch. Insbesondere das French Quarter ist faszinierend.

French Quarter in New Orleans beim Sitecore Symposium 2016
French Quarter in New Orleans

Diese Atmosphäre hat uns durch das ganze Event begleitet. 2000 Menschen aus aller Welt waren da, eine tolle Gelegenheit die Sitecore Community kennenzulernen und sich mit anderen Experten auszutauschen. Inhaltlich war für alle Zielgruppen etwas dabei, es gab Sessions mit den Schwerpunkten Marketing, Business, Development und diesmal auch eine für Sitecore-Neulinge. Die Entscheidung für eine Session war manchmal schwer, für Entwickler gab es bis zu 4 gleichzeitige Sessions.

Pre-Seminar:  “Habitat Masterclass”

Bevor es mit dem offiziellen Symposium losging, hat Sitecore dieses Jahr zum ersten Mal (zumindest in Europa), einige Intensivworkshops angeboten. Ich habe mich für einen eintägiges Seminar bei Thomas Eldblom von Sitecore zu Habitat entschieden. Es ging im Wesentlichen darum, die Architektur hinter Habitat und damit Helix zu verstehen:

“Helix is the official Guidelines and Recommended Practices for Sitecore development.”

Anders Laub hat einen guten Artikel für den schnellen Einstieg in modulare Architekturen geschrieben. Wenn ihr gleich selbst mal ein Habitat Modul entwickeln wollt, dann findet ihr hier die Schritt-für-Schritt Anleitung von Thomas.

Die Aussage war ganz klar: Sitecore sieht Habitat nicht als Framework oder Starterkit, es ist ein Demo-Projekt, umgesetzt nach Sitecore Best-Practices.

Anschließend gab es das Willkommensgetränk im Partner-Pavillon mit Musik aus der Preservation Hall. Die Stimmung stimmte, ein toller Einstieg in die Konferenz.

Mein Symposium Recap

Opening Keynote

Sitecore Symposium 2016 Opening Keynote Michael Seifert

Die Eröffnungskeynote wurde von Michael Seifert persönlich gehalten. Auf Experience (Experience, Experience) folgt DEMAND MORE

  • from Commerce
  • from Mobile
  • from Automation
  • from Context
  • from Engagement

Die Themen, welche uns dann natürlich auch durch das Symposium begleitet haben, waren: Embedded Commerce, Sitecore Experience Accelerator, New Path Analyzer Features, Azure.

Innovation & Technology

In der anschließenden Guest Keynote ging es um Technology & Innovation aus Sicht des Futuristen Jason Silva. Es war beeindruckend und inspirierend, ICH kann es nicht mit Worten beschreiben. Daher hier ein paar Zitate:

“Nature and the technology are one
in the same”
“The next Billionaire will be the one who affects a billion people in a positive way.”
“We have a responsibility to awe.”

Neugierig geworden? Dann schaut euch doch mal bei YouTube um.

Developer Keynote

Lars Fløe Nielsen hat einige Features der 8.2 vorgestellt:

  • Support Dependency Injection (einen guten Artikel von Kam Figy, Sitecore MVP, findet ihr hier)
  • Sitecore NuGet
  • Express Migration Tool (zunächst von 7.2 auf 8.2)
  • Helix Guidelines

Er hat die Wichtigkeit der Sitecore Entwickler (also uns) hervorgehoben.

Sein Schwerpunkt: Die Sitecore Community und das Feedback ist für Sitecore und die Produktentwicklung enorm wichtig. Ein Auszug:

xConnect

Zum Thema Sitecore xConnect gab es unterschiedliche Sessions. Was ist xConnect? Laut Todd Mitchell von Sitecore:

“Single, unified API that allows you to collect and act on any individual and their behavior”

Letztlich können mit dieser API Daten aus der xDB gelesen und in die xDB geschrieben werden, mit dem Ziel, ein Experience Profile über alle Channel, aber auch aus der On- und Offline-Welt, erstellen zu können. Ein gern herangezogenes Beispiel ist hier das Tracking des Besuchs eines Ladengeschäfts mittels iBeacon. Die Persistierung am xProfile erfolgt dann zukünftig mittels xConnect API. Sitecore xConnect kommt mit Sitecore 8.3.

Commerce vNext

Das ist mein persönliches Highlight:

Sitecore Symposium 2016 Commerce vNext

Sitecore hat eine eigene Commerce Engine basierend auf .NET Core von Microsoft entwickelt. Das Modul ist nahtlos in Sitecore integriert und es ist flexibel erweiterbar. Das initiale Release umfasst: Customer Management, Order Management und Dynamic Pricing.

Die gute Nachricht: Das im letzten Jahr veröffentlichte Sitecore Commerce Connect Modul als Layer zwischen Sitecore und einem externen Shop bleibt bestehen.

Das Modul wird mit Sitecore 8.3 veröffentlicht – ich bin wirklich gespannt.

House of Blues

Zwischen den Tagen gab es eine stilechte Symposium-Party im House of Blues. Dieses liegt mitten im French Quarter, niemals hätte ich dahinter eine Location für so viele Menschen vermutet. Es gab einen Shuttlebus, lecker Essen & Trinken, chillige Ecken, aber auch mehrere Bühnen mit Livemusik. Und wir haben gerockt!

Sitecore Symposium Afterparty House Of Blues
House of Blues – New Orleans

Schön, dass es am nächsten Morgen erst um 9 Uhr losging 😉

Why Games Make Us Better

Spieleentwicklerin Jane McGonigal hat uns den Start in den Tag 2 leicht gemacht. Am Beispiel Pokémon Go hat sie uns gezeigt, was ein gutes Spiel ausmacht, aber auch vorgeführt wie viel wir spielen: 1,75 Millarden Minuten pro Tag wird Candy Crush gespielt, das sind 3,5 Millionen Vollzeit-Stellen…
Außerdem sie hat uns ein Alibi gegeben:

Jane McGonigal - Why Games Make Us Better

Und wenn wir alle ein bisschen wie Uber denken, ist spielen dann unsere Zukunft?

Und sonst?

Unit Testing

Sitecore MVP Dan Solovay hat seine Begeisterung für Test Driven Development mit uns geteilt. Sitecore 8.2 macht es uns durch abstrakte Klassen, virtuelle Methoden und integrierter Dependency Injection in der Entwicklung viel leichter automatisiert zu testen. Er hat uns seine Tools vorgestellt und in Teilen live angewendet. xUnit, NSubstitute und NCrunch sind jedenfalls auf meiner Merkliste gelandet.

Multisites

Liz Spranzani und Trevor Campbell haben die seit Sitecore 8.1 in Sitecore integrierten Language-Fallback-Möglichkeiten vorgestellt, inkl. Stolpersteine und Best-Practices. Vor allem aber haben sie Anhaltspunkte und Fragenkataloge als Entscheidungsgrundlage für eine Multilanguage Strategie in Sitecore mitgebracht.

Turbocharged Publishing

Steven Pope hat in seiner Session anschaulich erläutert, warum Publizierung in Sitecore so teuer ist: Wenn 1 Item in 3 Sprachen mit 2 Publizierungszielen publiziert wird, mussten bisher 8753 Items angefasst werden (ich sage nur: Publishing Restrictions, Fields, Base Templates, Workflows, Languages, Publishing Targets, Related Items, Ancestors etc.)

Mit Sitecore 8.2 hat Sitecore die Publizierung auf Basis .NET Core reimplementiert. Damit dauert die Republizierung einer Webseite, die vorher mehr als 1 Tag gedauert hat, nur noch knapp 20 Minuten.

Aktuell ist die Verwendung des neuen Publishing Service optional konfigurierbar.

Mit der 8.3 kommen weitere UX Verbesserungen: Es gibt einen Publishing Manager in welchem die Redakteure OOTB die aktuellen Publizierungen einsehen können. Die für Redakteure nur irreführenden unterschiedlichen Publishing Modi wird es nicht mehr geben (sondern nur noch einen stablien und performanten) und “Publish Site” wird es nur noch für Admins geben.

Die Präsentation hatte echt Unterhaltungswert!

Closing Keynote

Es gab ein Schauspiel zum Thema xConnect in Perfektion. Vom Handy auf dem Sofa, über den Webshop zur persönlichen Ansprache im Ladengeschäft.

Außerdem hat Lars Fløe Nielsen einen Einblick in die Vision des Sitecore “Labors” gegeben: Redakteure bewegen sich in Sitecore ohne bewussten Applikationswechsel, es öffnet sich was gebraucht wird, dort wo es gebraucht wird, Bedienung in einem Fluss.

Das war der offizielle Teil. Für den Abend sind wir einem Tipp gefolgt und sind in kleiner Runde in die Frenchman Street, haben erst lokale Küche genossen und anschließend den Abend in einer Bluesbar ausklingen lassen. Das war ein wunderbarer Abschluss. Ich danke euch.

Ach ja, das nächste Symposium ist 2017 in Las Vegas. Ich freu mich auf euch 🙂

SUGCON 2016 in Kopenhagen – Rückblick auf Tag 2

Über den ersten Tag der SUGCON habe ich hier bereits berichtet. Am zweiten Tag ging es mit den Sessions genau so intensiv weiter.

Active Commerce: How we use SIM, PowerShell, Octopus Deploy, and Azure to automate product builds

Nick Wesselman hat zunächst kurz das Active Commerce E-Commerce System bzw. das darunterliegende Framework, basierend auf dem Sitecore E-Commerce Service (SES) vorgestellt. Das SES wird nicht mehr von Sitecore supported, ist aber Open Source und wurde auf GitHub veröffentlicht.

Anschließend hat Nick die intern etablierten Build- und Deployment-Prozesse und Tools vorgestellt. Meine Erkenntnis: PowerShell, PowerShell, PowerShell 🙂

BuildAndDeploymentProcess

Deep Dive – You, me and Sitecore MVC

Kern Herskind Nightingale hat mit Begeisterung einen Einstieg in MVC gegeben. Ist aber auch auf sehr konkrete Probleme und Lösungsansätze eingegangen:

WebForms sind Vergangenheit, MVC ist die Zukunft. Sein klarer Wunsch: Annäherung von Sitecore MVC an ASP.NET MVC.

Hedgehog Development – Sponsor Technical Highlights

Hedgehog als Sponsor hat kurz das TDS vorgestellt, was natürlich mehr kann als nur Items zu synchronisieren 😉

Wenn ihr interesssiert seid, findet ihr in diesem Blog-Beitrag von mir mehr Infos zum TDS.

Super Charge your Continuous Integration Deployments

Nikola Gotsev hat über CI-Prozesse im Allgemeinen und Best Practises zum Thema Branches, Frontend-Integration, Testing und den dafür erforderlichen verschiedenen Tools im Speziellen gesprochen.

Seine Tipps für Continuous Deployment:

  1. So wenig Content wie möglich in Source Control Systemen.
  2. Keinen Content in höhere Umgebungen ausliefern, dafür sind Packages zu verwenden.
  3. Vor der Auslieferung Datenbank Backup machen (Es gibt kein Undo).

Und so sieht dann sein perfekter Deploy-Prozess aus:

Perfect Scenario

Practical Habitat: Embrace the Architecture

Anders Laub hat weniger über Habitad gesprochen, sondern eher über Softwarearchitektur im Allgemeinen. Die Softwarearchitektur bildet die Grundlage und ist der langlebigste Aspekt eines Entwicklungsprojektes. Anders hat das wie folgt skizziert.

ArchitectureMethodsTools

Er war mit viel Herz und Verstand dabei und hat zum Nachdenken und Diskussionen angeregt. Ein paar Twitter-Zitate:

Ladies and Gentlemen, Start your Testing!

Alistair Deneys hat über Unit Tests in der Sitecore Entwicklung gesprochen. Klar gibt es Herausforderungen, die zu meistern sind: die Items in Sitecore, die Konfigurationsdateien, veraltete/ nicht “mockable” API…

Alistair hat dies gleich auf mehreren Wegen live demonstriert und gesteigert:

  1. Sitecore als Application installieren und die Tests als Page Test Runner laufen lassen
  2. Echte NUnit-Tests, indem Sitecore .configs und .dlls in das Test-Projekt kopiert werden.
  3. Mocken von Sitecore Items mittels Sitecore.FakeDb.

Schlussendlich hat er dann noch gezeigt, wie mittels Sitecore.LiveTesting eine Sitecore Infrastruktur außerhalb des IIS simuliert werden und Tests dagegen gefahren werden können.

Es gab auch schon eine kleine Vorschau auf das was kommt. Alles wird besser 😉 Statisches fliegt raus und es wird viele abstrakte Basisklassen geben.

Mein Mitbringsel für Euer Bücherregal 😉

UniTesting

I refactored doc.sitecore.net and all I got was this experience

Der letzte Vortrag der Konferenz kam von Martina Welander: Ein lebendiger und interessanter Vortrag über den Werdegang des Refactorings von doc.sitecore.net. Nicht immer auf dem direkten Weg, aber sehr reflektiert und selbstkritisch.

Und so hat sie den Prozess selbst dargestellt: https://twitter.com/mhwelander/status/725307365273288704

Irgendwie ein sprechendes Bild für Softwareentwicklung 😉

Auf Wiedersehen

Es war ein rundum gelungenes Event. Ich komme bestimmt nächstes Jahr wieder. Vorher sehen wir uns vielleicht auf einem der nächsten Usergroup Treffen in Deutschland? Ich würde mich freuen.

Highlights der SUGCON 2016 in Kopenhagen

Letzte Woche war ich zum ersten Mal auf der europäischen Sitecore User Group Conference, diesmal zu Gast in Kopenhagen. Die SUGCON ist eine Konferenz der Sitecore Community, von Entwicklern für Entwickler. Mir hat es richtig gut gefallen, die Vorträge waren Spitze. Ich habe Neues gehört, Wissen vertieft, Denkanstöße bekommen und mit vielen tollen Leuten gesprochen.

Tag 1

Am ersten Tag ging es um 12 Uhr mit einem gemeinsamen Lunch los. Es war lecker und ein guter Auftakt, auch um zu sehen, wer alles so da ist: Entwickler aus aller Welt.

Die Keynote haben sich Michael Seifert und Lars Fløe Nielsen geteilt. Das fing mit einer Vorschau auf die nächsten Sitecore Versionen schon spannend an.

Sitecore 8.2 legt den Fokus auf die UX des Experience Editors (Pre-Release!):

Preview ExperienceEditor

In 8.3 liegt der Schwerpunkt auf der Verbesserung der Marketing-Werkzeuge (Pre-Release!):

Preview Experience Editor AutomationPlans

Zukünftig sind deutlich weniger Applikationssprünge nötig. Beispielsweise werden Formulare und Engagement Pläne direkt im Experience Editor gepflegt.

Und sonst:

  • Es wird ein Express Upgrade Tool geben. Perspektivisch ist dann keine Migration mehr von Version zu Version erforderlich, sondern größere Sprünge können einfach durchgeführt werden.
  • Enterprise Publizierung: Es wird eine triggerbasierte Publizierung geben und die Performance im Allgemeinen wird verbessert.
  • ASP.NET WebForms werden nicht mehr weiter entwickelt. Vorerst natürlich aber weiter supported.
  • Das Silverlight Plugin wird zukünftig nicht mehr benötigt. Schade 😉
  • Und mein Highlight: WFFM wird abgelöst (kann man auch in obigem Screen schon sehen)

Es folgten viele weitere Sessions. Teilweise fanden drei parallel statt und es war nicht immer einfach sich zu entscheiden. Ein Auszug meiner Agenda des ersten Tages habe ich hier mal zusammengefasst:

Serialize all the things with Unicorn

Kam Figy selbst hat Unicorn vorgestellt. Unicorn ist ein Tool für den Austausch von Items zwischen unterschiedlichen Sitecore Umgebungen. Hervorzuheben ist, dass die serialisierten Items für Entwickler gut lesbar und damit auch Merge-Konflikte einfacher zu handhaben sind (als die serialisierten Items von Sitecore selbst). Neu ist: Mit der Version 3.2 können auch Benutzer und Rollen synchronisiert werden.

Commerce Nerdvada for Sitecore with uCommerce

Anschließend hat Søren Spelling Lund die Architektur von uCommerce vorgestellt – modular und erweiterbar, nach dem SOLID Prinzip.

SOLID

uCommerce ist ein .NET basiertes E-Commerce System, für welches es bereits einen Sitecore Commerce Connector gibt. Interesse geweckt? Es gibt Online-Trainings. Das nächste beginnt am 23. Mai.

Sitecore Pathfinder – Another look at the developer experience

Dmitry Kostenko von Sitecore hat den Sitecore.Pathfinder als „Experimental open-source toolchain for Sitecore that looks end feels like a compiler“ vorgestellt. Die Idee / das Ziel:

  • Alle Bestandteile der Sitecore Entwicklung (Templating, Items, Design, Quellcode) an einer Stelle verortet
  • Entwicklung in einer beliebigen IDE
  • Einfaches Deployment (ein Shortcut für Build und Deploy)
  • CI: Lokal und auf den Servern die gleichen Tools verwenden

Templating könnte dann in Zukunft so aussehen:

Templating

Mir hat die Idee zu denken gegeben. Ich bin neugierig geworden und ich werde es mir bestimmt näher ansehen.

Sitecore might be secure, but your site isn’t

In Bas Lijten’s Vortrag ging es weniger um Sitecore als um die Absicherung von Webseiten im Allgemeinen. Er hat potentielle Sicherheitslücken anschaulich demonstriert und Lösungen aufgezeigt. Seine Folien findet ihr bereits auf Slideshare.

Sitecore and NuGet: Sitecore development done right

Sean Holmesby hat uns in seiner Session gezeigt, wie NuGet effektiv in der Sitecore- Entwicklung und im Build-Prozess eingesetzt werden kann, um die „DLL-Hell“ zu umgehen. Außerdem hat er mögliche Standards / Konventionen aufgezeigt. Den gesamten Vortrag könnt ihr bei YouTube sehen. Seine Tools und Ideen in Kürze findet ihr hier in der Sitecore Communiy.

GetTogether

Um 18 Uhr waren dann die Sessions durch. Bei einem geselligen Getränk wurden die Sitecore MVP’s 2016 gekürt. Herzlichen Glückwunsch an die Gewinner. Später gab es noch eine Vorstellung des Gewinners des diesjährigen Hackaton. Zum zweiten Mal ist es das Team Uniques von Unic geworden. Wow.

Und zuletzt gab es noch ein lustiges Quiz für alle, in dem historisches Sitecore-Wissen gefragt war. Hättet ihr gewusst, welche der folgenden Datenbanken nie von Sitecore supported wurde: MS SQL, MySQL, MongoDB oder Tamino?

Dinner

Gegen 21 Uhr war das offizielle GetTogether durch, wir aber noch lange nicht 😉

Weiter mit Tag 2 der SUGCON 2016