SAP Community dead? My Community starts
How active is the SAP community and why is it so difficult for us to find the latest topics? Perhaps we have an alternative for you.
Table of contents
In this article we want to take a look at the current state of the SAP community and what isn't going so well at the moment. In the next step we'll look at a small mini-app that might also simplify your life in the community.
Introduction
The SAP blogs and information were available for many years at the URL blogs.sap.com. We always found the latest content first there and had easy ways to limit our content. A while ago, however, the entire SAP community was switched to a new product, a platform from Khoros. All content is now located on community.sap.com.
Opinion
There have been a few voices from the community since then, and none of them have been very positive about the current state of the SAP community. Let's take two examples that we have also followed.
We have various questions about the structure and functionality of the platform:
- Do I really see the current content on my topics?
- For example, how do I get the latest posts on the topic of "ABAP Development"?
- Which board is actually the right one and why are there three areas for Technology (By SAP, By Members, Q&A)?
- If I filter on the technology level, I always get to see the Q&A that I actually want to hide.
These points currently make working with the SAP community difficult and probably deter many writers who have repeatedly made contributions in the past.
Khoros
Khoros is a standard product on the market for communities, which means that the model and the management of the data are well known. Another advantage is that it has a standardized API that can be used for various things, such as queries to obtain additional information. In order to read the API documentation, you need an account on the site.
Search
Khoros offers an endpoint for various search queries without an API key. Basically, you can pass any LiQL statement (SQL-like query language for lithium data) via this endpoint and receive the corresponding result back. This allows you to take a first step and see how the data model is used. Let's take the following statement:
https://community.sap.com/api/2.0/search?q=select * from boards limit 5
This would read the first 5 entries from the entity "Boards", and we would get a JSON back as a result.
{
"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": {}
}
Based on the structure of the message, we first receive information about whether our request was successful. This is where we also find the data. This is then divided into the various entities and the data sets. As with any access, we should keep the result set relatively small. To do this, we can restrict the fields and specify a WHERE condition.
https://community.sap.com/api/2.0/search?q=select id, view_href, title, description from boards WHERE conversation_style = 'blog' limit 5
We now receive a shorter result and only the fields that we need for further processing. Likewise, we only receive boards that are marked as blogs.
{
"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": {}
}
Model
If we look at the data model, where are the blogs and content that are relevant to us? These are distributed across different entities:
- Boards - Describes a board in the community, such as: Technology Blogs by Members, Technology Blogs by SAP or Technology Q&A. All boards fall under the heading "Technology" in the SAP Community.
- Products - Are the different categories, such as: ABAP Cloud, ABAP Development, Basis Technology. These would then be the tags that we would be interested in.
- Messages - Are all interactions with blogs, i.e. messages, but also the content of the blogs. Here we would find the content of the blog, but also the comments underneath.
- Tags/Labels - additional information about your own tags on a blog, which the author can assign himself.
SAP Technology Blogs
We got the necessary information from Marian about which framework is running in the background, where we can find the API documentation and access to a GitHub repository to test out initial examples. From this we built our public page for the SAP Technology Blogs.
The page was quite simple at the beginning because we tried to speed up the runtimes and make the page more usable by adjusting the statements. In the end, however, loading the additional tags costs a lot of runtime and searching via them would not be possible either. We have therefore decided to provide local buffer tables and to keep the data sets up to date by regularly pulling them in order to achieve the fastest possible loading time when accessing them.
My Community
The second evolutionary stage was its own small mini-app, but why? Only a small amount of information can be saved across browsers on a public page and in the worst case, settings and information would be lost. There are also already news feeds that are regularly updated, but we cannot put these together optimally, the way we would like the content to be.
Functions
That's why we wanted to integrate a few more functions that also bring personal added value when using them. Such functions are:
- Create individual variants of products and boards
- Mark articles as read and hide them
- Add articles to your own bookmarks/lists
- Integrate additional blogs into the feed
Tour
Here is a short tour of the app, where we explain some of the functions. In the main menu of the app you can jump to the various subpages and settings. In the app you can use the menu; maintain the different versions, set your own settings and further information is also displayed here.
You can manage the bookmarks yourself and move articles between folders if you want to save them for later and have already read them. This way you can keep your articles somewhat organized.
You can switch between the different versions with two clicks to see the content that is relevant to you. If you have marked all articles as read, only new articles will be displayed.
Data
The app is purely a display of the content of the various communities and blogs. We only prepare most of the information when the individual articles are requested. At the end you always jump to the original article, so that the actual platform always remains important.
Integration
Do you run a blog yourself or would you like to include your favorite blog in the community feed? It's very simple, you need the website and a possible description of the API. The API should be REST-like so that we can easily read and integrate the content. Just get in touch with us and we'll see if we can integrate the blog.
Conclusion
Is the community actually dead now? At the moment we'd say 50%. The content that doesn't come from SAP has decreased and a lot of it can now be found on LinkedIn, X, Mastodon or other platforms, but no longer in the "real" Community.