SAP Community tot? My Community startet
Wie aktiv ist eigentlich noch die SAP Community und warum finden wir die aktuellsten Themen nur noch schwer? Vielleicht haben wir eine Alternative für dich.
Inhaltsverzeichnis
In diesem Artikel wollen wir uns einmal den aktuellen Zustand der SAP Community anschauen und was eigentlich im Moment nicht mehr so gut läuft. Im nächsten Schritt schauen wir uns einen kleine Mini-App an, die vielleicht auch dein Leben in der Community vereinfachen kann.
Einleitung
Die SAP Blogs und Informationen waren viele Jahre unter der URL blogs.sap.com erreichbar, wir fanden dort immer den neuesten Content an erster Stelle und hatten einfache Möglichkeiten, auf unsere Inhalte einzuschränken. Vor nun einer Weile wurde allerdings die gesamte SAP Community auf ein neues Produkt umgestellt, eine Plattform von Khoros. Der gesamte Content befindet sich nun auf community.sap.com.
Meinung
Stimmen aus der Community gab es seither einige und alle nicht sehr positiv, wie es aktuell um die SAP Community aufgestellt ist. Nehmen wir mal zwei Beispiele, die auch wir verfolgt haben.
Für uns stellen sich dabei verschiedene Fragen zum Aufbau und der Funktionsweise der Plattform:
- Sehe ich wirklich den aktuellen Inhalt zu meinen Themen?
- Wie komme ich zum Beispiel an die letzten Posts für das Thema "ABAP Development"?
- Welches Board ist eigentlich richtig und wieso gibt es für Technology drei Bereiche (By SAP, By Members, Q&A)?
- Wenn ich auf Technologie-Ebene filtere, bekomme ich immer auch die Q&A zu sehen, die ich eigentlich ausblenden möchte.
Diese Punkte machen aktuell die Arbeit mit der SAP Community nicht sehr einfach und schrecken wahrscheinlich auch viele Schreiber ab, die in der Vergangenheit immer wieder Beiträge erstellt haben.
Khoros
Khoros ist ein Standardprodukt am Markt für Communitys, das heißt das Modell und die Verwaltung der Daten ist soweit bekannt. Ebenso ein Vorteil, es besitzt eine standardisierte API, die man für verschiedene Dinge nutzen kann, wie zum Beispiel Abfragen, um an zusätzliche Informationen zu kommen. Um die API Dokumentation lesen zu können, benötigst du allerdings einen Account auf der Seite.
Suche
Khoros bietet ohne API-Key einen Endpunkt für diverse Suchanfragen an. Im Grunde kann man über diesen Endpunkt ein beliebiges LiQL-Statement (SQL-ähnliche Abfragesprache für Lithium Daten) übergeben und erhält das entsprechende Ergebnis zurück. Damit kann man im ersten Schritt einmal schauen, wie das Datenmodell genutzt wird. Nehmen wir dazu das folgende Statement:
https://community.sap.com/api/2.0/search?q=select * from boards limit 5
Damit lesen wir die ersten 5 Einträge von der Entität "Boards", als Ergebnis würden wir ein JSON zurückbekommen.
{
"status": "success",
"message": "",
"http_code": 200,
"data": {
"type": "boards",
"list_item_type": "board",
"size": 5,
"items": [
{
"type": "board",
"id": "SAP-TechEd-Groupforum-board",
"href": "/boards/SAP-TechEd-Groupforum-board",
"view_href": "https://community.sap.com/t5/sap-teched-discussions/bd-p/SAP-TechEd-Groupforum-board",
"conversation_style": "forum",
"title": "SAP TechEd Discussions",
"short_title": "Discussions",
"description": "Join the conversation around SAP TechEd! Discuss details of technical sessions and workshops and anything else conference related.",
"parent_category": {},
"root_category": {
"type": "category",
"id": "groups",
"href": "/categories/groups",
"view_href": "https://community.sap.com/t5/groups/ct-p/groups"
},
"ancestor_categories": {
"query": "SELECT * FROM categories WHERE descendant_categories.id = 'SAP-TechEd-Groupforum-board'"
},
"language": "en",
"hidden": false,
"messages": {
"query": "SELECT * FROM messages WHERE board.id = 'SAP-TechEd-Groupforum-board'"
},
"topics": {
"query": "SELECT * FROM messages WHERE board.id = 'SAP-TechEd-Groupforum-board' AND depth = 0"
},
"views": 3853025,
"available_statuses": {
"type": "message_statuses",
"list_item_type": "message_status",
"size": 0,
"items": []
},
"allowed_labels": "predefined-only",
"require_thread_root_label": true,
"date_pattern": "MM-dd-yyyy",
"friendly_date_enabled": true,
"friendly_date_max_age": 31,
"rating": "kudos",
"skin": "sap2023",
"depth": 4,
"position": 0,
"user_context": {
"type": "node_user_context",
"sort_order": "DESC",
"sort_field": "post_time"
},
"image_privacy": "private",
"nested": false,
"creation_date": "2021-10-01T17:12:41.829+02:00",
"c_exclude_tiled_nav": false
},
{
"type": "board",
"id": "SAP-TechEd-Groupblog-board",
"href": "/boards/SAP-TechEd-Groupblog-board",
"view_href": "https://community.sap.com/t5/sap-teched-blog-posts/bg-p/SAP-TechEd-Groupblog-board",
"conversation_style": "blog",
"title": "SAP TechEd Blog Posts",
"short_title": "Blog Posts",
"description": "Share your experiences about SAP TechEd: Write about your favorite sessions and other conference highlights.",
"parent_category": {},
"root_category": {
"type": "category",
"id": "groups",
"href": "/categories/groups",
"view_href": "https://community.sap.com/t5/groups/ct-p/groups"
},
"ancestor_categories": {
"query": "SELECT * FROM categories WHERE descendant_categories.id = 'SAP-TechEd-Groupblog-board'"
},
"language": "en",
"hidden": false,
"messages": {
"query": "SELECT * FROM messages WHERE board.id = 'SAP-TechEd-Groupblog-board'"
},
"topics": {
"query": "SELECT * FROM messages WHERE board.id = 'SAP-TechEd-Groupblog-board' AND depth = 0"
},
"views": 1705759,
"available_statuses": {
"type": "message_statuses",
"list_item_type": "message_status",
"size": 0,
"items": []
},
"comments_enabled": true,
"allowed_labels": "predefined-only",
"require_thread_root_label": true,
"date_pattern": "MM-dd-yyyy",
"friendly_date_enabled": true,
"friendly_date_max_age": 31,
"rating": "kudos",
"skin": "sap2023",
"depth": 4,
"position": 1,
"user_context": {
"type": "node_user_context",
"sort_order": "DESC",
"sort_field": "post_time"
},
"image_privacy": "private",
"nested": false,
"creation_date": "2021-10-01T17:12:41.829+02:00",
"c_exclude_tiled_nav": false
},
{
"type": "board",
"id": "Coffee-Cornerforum-board",
"href": "/boards/Coffee-Cornerforum-board",
"view_href": "https://community.sap.com/t5/coffee-corner-discussions/bd-p/Coffee-Cornerforum-board",
"conversation_style": "forum",
"title": "Coffee Corner Discussions",
"short_title": "Discussions",
"description": "Get to know other SAP Community members during your coffee break. Join discussions on a variety of topics in a casual environment.",
"parent_category": {},
"root_category": {
"type": "category",
"id": "groups",
"href": "/categories/groups",
"view_href": "https://community.sap.com/t5/groups/ct-p/groups"
},
"ancestor_categories": {
"query": "SELECT * FROM categories WHERE descendant_categories.id = 'Coffee-Cornerforum-board'"
},
"language": "en",
"hidden": false,
"messages": {
"query": "SELECT * FROM messages WHERE board.id = 'Coffee-Cornerforum-board'"
},
"topics": {
"query": "SELECT * FROM messages WHERE board.id = 'Coffee-Cornerforum-board' AND depth = 0"
},
"views": 19028145,
"available_statuses": {
"type": "message_statuses",
"list_item_type": "message_status",
"size": 0,
"items": []
},
"allowed_labels": "predefined-only",
"require_thread_root_label": false,
"date_pattern": "MM-dd-yyyy",
"friendly_date_enabled": true,
"friendly_date_max_age": 31,
"rating": "kudos",
"skin": "sap2023",
"depth": 4,
"position": 0,
"user_context": {
"type": "node_user_context",
"sort_order": "DESC",
"sort_field": "post_time"
},
"image_privacy": "private",
"nested": false,
"creation_date": "2021-10-06T23:34:13.813+02:00",
"c_exclude_tiled_nav": false
},
{
"type": "board",
"id": "Women-in-Techforum-board",
"href": "/boards/Women-in-Techforum-board",
"view_href": "https://community.sap.com/t5/sap-women-in-tech-discussions/bd-p/Women-in-Techforum-board",
"conversation_style": "forum",
"title": "SAP Women in Tech Discussions",
"short_title": "Discussions",
"description": "Join the conversation in the SAP Women in Tech group or start your own discussion to share your thoughts, connect with the community, and build your network.",
"parent_category": {},
"root_category": {
"type": "category",
"id": "groups",
"href": "/categories/groups",
"view_href": "https://community.sap.com/t5/groups/ct-p/groups"
},
"ancestor_categories": {
"query": "SELECT * FROM categories WHERE descendant_categories.id = 'Women-in-Techforum-board'"
},
"language": "en",
"hidden": false,
"messages": {
"query": "SELECT * FROM messages WHERE board.id = 'Women-in-Techforum-board'"
},
"topics": {
"query": "SELECT * FROM messages WHERE board.id = 'Women-in-Techforum-board' AND depth = 0"
},
"views": 529275,
"available_statuses": {
"type": "message_statuses",
"list_item_type": "message_status",
"size": 0,
"items": []
},
"allowed_labels": "predefined-only",
"require_thread_root_label": true,
"date_pattern": "MM-dd-yyyy",
"friendly_date_enabled": true,
"friendly_date_max_age": 31,
"rating": "kudos",
"skin": "sap2023",
"depth": 4,
"position": 0,
"user_context": {
"type": "node_user_context",
"sort_order": "DESC",
"sort_field": "post_time"
},
"image_privacy": "private",
"nested": false,
"creation_date": "2022-02-25T21:48:33.080+01:00",
"c_exclude_tiled_nav": false
},
{
"type": "board",
"id": "Women-in-Techblog-board",
"href": "/boards/Women-in-Techblog-board",
"view_href": "https://community.sap.com/t5/sap-women-in-tech-blog-posts/bg-p/Women-in-Techblog-board",
"conversation_style": "blog",
"title": "SAP Women in Tech Blog Posts",
"short_title": "Blog Posts",
"description": "Join the SAP Women in Tech group to share your experiences and connect with the community. Read and write blog posts to learn from and inspire colleagues and peers.",
"parent_category": {},
"root_category": {
"type": "category",
"id": "groups",
"href": "/categories/groups",
"view_href": "https://community.sap.com/t5/groups/ct-p/groups"
},
"ancestor_categories": {
"query": "SELECT * FROM categories WHERE descendant_categories.id = 'Women-in-Techblog-board'"
},
"language": "en",
"hidden": false,
"messages": {
"query": "SELECT * FROM messages WHERE board.id = 'Women-in-Techblog-board'"
},
"topics": {
"query": "SELECT * FROM messages WHERE board.id = 'Women-in-Techblog-board' AND depth = 0"
},
"views": 107108,
"available_statuses": {
"type": "message_statuses",
"list_item_type": "message_status",
"size": 0,
"items": []
},
"comments_enabled": true,
"allowed_labels": "predefined-only",
"require_thread_root_label": true,
"date_pattern": "MM-dd-yyyy",
"friendly_date_enabled": true,
"friendly_date_max_age": 31,
"rating": "kudos",
"skin": "sap2023",
"depth": 4,
"position": 1,
"user_context": {
"type": "node_user_context",
"sort_order": "DESC",
"sort_field": "post_time"
},
"image_privacy": "private",
"nested": false,
"creation_date": "2022-02-25T21:48:33.080+01:00",
"c_exclude_tiled_nav": false
}
],
"next_cursor": "MjQuNHwyLjB8aXw1fDQ0OjF8aW50LDI0LDU2"
},
"metadata": {}
}
Vom Aufbau der Nachricht her, erhalten wir zuerst einmal die Information, ob unsere Anfrage geklappt hat. Dort finden wir dann auch die Daten. Diese unterteilen sich dann in die verschiedenen Entitäten und die Datensätze. Wie bei jedem Zugriff, sollten wir die Ergebnismenge relativ klein halten. Dazu können wir noch die Felder einschränken und eine WHERE Bedingung mitgeben.
https://community.sap.com/api/2.0/search?q=select id, view_href, title, description from boards WHERE conversation_style = 'blog' limit 5
Wir erhalten nun ein kürzeres Ergebnis und nur die Felder die wir für die weitere Verarbeitung benötigen. Ebenso erhalten wir nur noch Baords die als Blog gekennzeichnet sind.
{
"status": "success",
"message": "",
"http_code": 200,
"data": {
"type": "boards",
"list_item_type": "board",
"size": 5,
"items": [
{
"type": "board",
"id": "SAP-TechEd-Groupblog-board",
"view_href": "https://community.sap.com/t5/sap-teched-blog-posts/bg-p/SAP-TechEd-Groupblog-board",
"title": "SAP TechEd Blog Posts",
"description": "Share your experiences about SAP TechEd: Write about your favorite sessions and other conference highlights."
},
{
"type": "board",
"id": "Women-in-Techblog-board",
"view_href": "https://community.sap.com/t5/sap-women-in-tech-blog-posts/bg-p/Women-in-Techblog-board",
"title": "SAP Women in Tech Blog Posts",
"description": "Join the SAP Women in Tech group to share your experiences and connect with the community. Read and write blog posts to learn from and inspire colleagues and peers."
},
{
"type": "board",
"id": "Enterprise-Architectureblog-board",
"view_href": "https://community.sap.com/t5/enterprise-architecture-blog-posts/bg-p/Enterprise-Architectureblog-board",
"title": "Enterprise Architecture Blog Posts",
"description": "Need a little more room to share your thoughts with the community? Post a blog in the SAP Enterprise Architecture group to explain the more complex topics."
},
{
"type": "board",
"id": "yerevanblog-board",
"view_href": "https://community.sap.com/t5/yerevan-blog-posts/bg-p/yerevanblog-board",
"title": "Yerevan Blog Posts",
"description": "Learn about latest news and events by community in Yerevan and the broader Armenia."
},
{
"type": "board",
"id": "students-cornerblog-board",
"view_href": "https://community.sap.com/t5/beginner-corner-blog-posts/bg-p/students-cornerblog-board",
"title": "Beginner Corner Blog Posts",
"description": "Share your stories, ideas, and insights here."
}
],
"next_cursor": "MjQuNHwyLjB8aXw1fDQ0OjF8aW50LDI1LDgz"
},
"metadata": {}
}
Modell
Wenn wir uns das Datenmodell anschauen, wo befinden sich dann die für uns relevanten Blogs und Inhalte? Diese sind über verschiedene Entitäten verteilt:
- Boards - Beschreibt ein Board in der Community, wie zum Beispiel: Technology Blogs by Members, Technology Blogs by SAP oder Technology Q&A. Alle Boards fallen unter den Punkt "Technology" in der SAP Community.
- Products - Sind die verschiedenen Kategorien, wie zum Beispiel: ABAP Cloud, ABAP Development, Basis Technology. Wären dann die Tags an denen wir Interesse hätten.
- Messages - Sind alle Interaktionen mit Blogs, also Nachrichten, aber auch der Inhalt der Blogs. Hier würden wir den Content zum Blog finden, aber auch die Kommentare darunter.
- Tags/Labels - Zusatzinformationen zu eigenen Tags an einem Blog, die der Autor selbst vergeben kann.
SAP Technology Blogs
Über Marian haben wir die nötigen Informationen bekommen, welches Framework im Hintergrund läuft, wo wir die API Dokumentation finden und Zugriff auf ein GitHub Repository, um erste Beispiele mal zu testen. Daraus haben wir unsere öffentliche Seite für die SAP Technology Blogs gebaut.
Die Seite war am Anfang recht einfach, da wir versucht haben, mit Anpassung der Statements die Laufzeiten zu beschleunigen und die Seite bedienbarer zu machen. Am Ende kostet aber das Laden der zusätzlichen Tags jede Menge Laufzeit und auch ein Suchen darüber wäre nicht möglich. Deshalb haben wir uns dazu entschieden lokale Puffertabellen zur Verfügung zu stellen und per regelmäßigem Pull die Datensätze aktuell zu halten, um so die schnellstmögliche Ladezeit beim Zugriff zu erhalten.
My Community
Die zweite Evolutionsstufe war nun eine eigene kleine Mini-App, aber wieso eigentlich? Über eine öffentliche Seite, können nur wenige Informationen Browserübergreifend gespeichert werden und im Worst-Case wären Einstellungen und Informationen verloren. Es gibt aber auch bereits News-Feeds die regelmäßig aktualisiert werden, diese können wir aber nicht optimal zusammenstellen, so wie wir den Content haben möchten.
Funktionen
Deshalb wollten wir einige Funktionen mehr integrieren, die auch einen persönlichen Mehrwert bei der Nutzung bringen. Solche Funktionen sind:
- Produkte und Boards individuell in Varianten zusammenstellen
- Artikel als Gelesen markieren und Ausblenden
- Artikel zu eigenen Lesezeichen/-listen hinzufügen
- Integration zusätzlicher Blogs in den Feed
Tour
Hier eine kleine Tour durch die App, wo wir einige Funktionen erklären. Im Hauptmenü der App kannst du auf die verschiedenen Unterseiten und Einstellungen springen. In der App lassen sich über das Menü die verschiedenen Varianten pflegen, die eigenen Einstellungen setzen und hier werden auch weitere Informationen angezeigt.
Die Lesezeichen kannst du selbst verwalten und Artikel zwischen den Ordnern verschieben, wenn du sie für später speichern möchtest und schon gelesen hast. So behältst du etwas Ordnung über deine Artikel.
Du kannst mit zwei Klicks zwischen den verschiedenen Varianten wechseln, um den für dich relevanten Inhalt zu sehen. Hast du alle Artikel als gelesen markiert, dann werden dir nur noch neue Artikel angezeigt.
Daten
Bei der App handelt es sich um eine reine Anzeige des Contents der verschiedenen Communitys und Blogs. Wir bereiten die meisten Informationen erst dann auf, wenn die einzelnen Artikel angefordert werden. Am Ende springst du immer auf den originalen Artikel, sodass die eigentliche Plattform immer wichtig bleibt.
Integration
Du betreibst selbst einen Blog oder möchtest deinen Lieblingsblog mit in den Community Feed einbinden? Ganz einfach, du benötigst die Webseite und eine mögliche Beschreibung der API. Die API sollte REST-ähnlich sein, sodass wir den Content leicht lesen und integrieren können. Melde dich dazu einfach bei uns und wir schauen, ob wir den Blog mit integrieren können.
Fazit
Ist die Community nun eigentlich tot? Im Moment würden wir sagen zu 50%. Der Content der nicht von SAP kommt, ist zurückgegangen und vieles davon findet man nun auf LinkedIn, X, Mastodon oder anderen Plattformen, aber eben nicht mehr in der "eigentlichen" Community.