Practicing CaaS in the SAP ecosystems
If you look at most software development projects, there are usually a variety of project phases that are present (solution design, etc) – each phase requires certain roles (developers, process experts, consultants, architects, etc.) and skills. The SAP ecosystem has community members that also come from a variety of different backgrounds / roles. Some of these roles have their own communities (such as the BPX Community).
Let’s take a look at the CaaS options per role in the SCN ecosystem:
|Developer, BPX||Forums||Most of those involved in the SAP ecosystem have used forums to solve particular coding problems – usually in the form of a forum thread. This is an activity that has been going since SDN started – indeed, the forums are still the most popular section of the SCN and consistently receive the most hits out of all content types.|
|Developer||CodeX||Once SAP’s Code Exchange (CodeX), a place where developers can share and collaborate on innovative projects, becomes active then community members will be also able to develop code together.|
||SAP itself has started realizing the value of CaaS and has initiated IdeaPlace which has the purpose of collecting community innovation. SAP is using the community to promote innovation in its ecosystem as well as its product lines These innovations focus more on features or particular usability issues.|
|Developer||Wiki||Location for individuals to work on code (such as Community Code Gallery) and other content types.|
What I’ve never seen, however, is the use of this community to deal with the more abstract project phases – such as the fundamental technical architecture of a solution – in particular, those that usually happen early on in a software project. The SCN wiki would appear to be the ideal location for such an activity but it has never been used to perform such tasks. Indeed, I’ve never seen CaaS for solution designs practiced anywhere – in any community. There are process wikis available but nothing similar for more technical / architectural topics.
Note: Such CaaSA or crowd-sourced solution designs might be especially relevant for more complex software systems that are necessary in NGOs (Non-Governmental Organization) or other groups that might not have the funds to hire expensive consultants. Following the Haiti earthquake, there were various groups that needed software solutions (many of a complex nature) to help them deal with the crises – I attempted to follow their progress and the modus operandi but at some point lost track due to all the hectic activity.
Some might say that we already have github / sourceForge / assembla to fulfill this need but they don’t really meet the requirements / use cases in which I’m interested. Such platforms are more focused on the development of new software rather than the piecing together of existing components or discovering the correct usage of existing software (for example, from a particular vendor) – perhaps, via configuration. I’m not saying that one task is more complex than the other – I’m just saying that there is a difference between a developer and a solution architect – especially in the enterprise software space.
I’d like to try an experiment and crowd-source a solution design in this community. Initially, I’ll be starting with the SCN wiki but code may also be necessary – so other tools may be necessary.
Note: Some may be asking what about StreamWork or CollaborationWorkspace – both are restricted to certain individuals – so it is difficult for the community to use such platforms for CaaS purposes.
Some of the questions that must be examined in this attempt:
- What tools are necessary for such CaaS activities?
- Are the existing tools in the SCN wiki (Gliffy, etc) enough to meet these needs?
- Should various solution designs be created and then those interested can select the “best” one?
- What is the optimal way to attract solution architects to such projects?
- How do you move such CaaS-based designs to software platforms where development may occur?
CaaS task: Defining the architecture for a Tweeting SAP System
Note: For this CaaS task, I’ve started a SCN wiki page
Apache ESME is a secure and highly scalable microsharing and micromessaging platform that allows people to discover and meet one another and get controlled access to other sources of information, all in a business process context. There are a variety of REST APIs that are available to post status messages to ESME.
ESME is currently working with the #ubimic team to examine innovative uses of microblogging in enterprise settings. #ubimic is a research team with the goal “to create a microblogging space including everyone and everything. Think of tweeting machines, sensors, software and business processes. This is Ubiquitous Microblogging”. Torsten Zinke is a graduate student at the TU Chemnitz, who is currently working with this group. Torsten’s project focuses on a prototype of an ERP system that participates in activity streams – supplying status information about changes in business objects. An initial java-based application has been created that runs externally in an application server and reads information from a few BAPIs and publishes the status changes on Twitter.
This solution has problems – 1) it is not generic and can not be easily applied to other business objects and 2) the ability to select which particular status events are published is just possible via code changes.
SalesForce’s Chatter is Quick thoughts on on-demand and on-premise environments and their innovative potential and thus is available out-of-the-box. Ideally, this sort of functionality should be built into the BusinessSuite core but since this isn’t the case, other functionality must be used.
Note: The Apache ESME team has done something similar with a ABAP Object Watcher from Thomas Jung (which we demonstrated at the Demo Jam at the TechEd in Berlin in 2008) but we’d like to do the same with business objects (PO, Customer, Opportunity, etc) from the Business Suite providing end-users the ability to control the status messages they receive.
The Challenge: What is the best architecture for this application?
- Status events should be sent when CRUD events on business objects take place.
- A generic solution is necessary so that the functionality can be applied selectively to a variety of business objects with a minimum of effort on the part of end-users, admins or developers
- Ideally, the architecture should use standard SAP functionality (perhaps, via customizing)
- The solution should function in older ERP versions (4.7C+)
- Users should be able to select which events they wish to receive
- Authorizations in ERP should be considered when posting information
Our current architecture
A caveat: Since Torsten or myself aren’t ABAP gurus, we decided to look on our own for a possibility to use existing SAP technology to meet these requirements. Our lack of knowledge in this area, is the reason why we need help from the community. We don’t need help coding (yet) – first, we need help at an earlier phase in the development process – we need assistance discovering the optimal solution.
In our search for the optimal solution, we have only found one possible architecture – one that is based on Alert Management with SAP NetWeaver Application Server – the idea is that we use the alert framework to capture changes in business objects and post messages with the details
Here are the steps, we are considering:
- The alert would be triggered by the occurrence of an event defined in the Business Object Repository (BOR).
- In transaction SWE2, we enter the alert category as the receiver type and the function module SALRT_CREATE_VIA_EVENT as the receiver function module for the event.
- We then configure alert processing so that HTTP events – using ESME’s REST API – are fired in response to these events.
- In transaction SWE2, we enter the alert category as the receiver type and a new function module ESME_STATUS_SEND as the receiver function module for the event. This function module then sends the status changes to ESME
Our dilemma is we have no idea how we are going to communicate the information in a generic fashion.
Other open questions
- Would we use SAPConnect and its ability to send HTTP messages to post the alerts to the ESME REST API?
- How can we avoid the time-consuming setup of the alerts in the SAP-System, which is absolutely contrary to an out-of-the-box-solution? (maybe some kind of deployment-solution?) Currently, it looks like the user must use the Business Server Page (BSP) application ALERTSUBSCRIPTION to pick those alerts that are of interest to him.
- How can we customize alerts from outside the SAP-System? (Imagine you have an internal microblogging system, add an instance of the “SAP bot” and configure it to post changes on your invoices)
- What’s with rights management? Is there a possibility to check at runtime if the current user of the microblogging system has rights to see the business object in the SAP system?
The link to TwiBAP
A excellentTwibap: the ABAP Twitter APIfrom Uwe Fetzer described the ability to post Twitter messages via ABAP using OAuth. The same architectural code that is required for ESME might be used to post to Twitter with Uwe’s code.
There is an ongoing research project at Chemnitz University of Technology, aiming at building an open source solution for enterprise activity streams. The SAP integration shall become an important part of the concept. If an interested community is present it may be possible to make the SAP integration available as open source project (for example, in SAP’s CodeX).