1 2 3 5 Previous Next

Technology Innovation

65 Posts

Last week I had the privilege of attending Communitech’s Tech Leadership conference for Waterloo Region (Waterloo hereafter) where the atmosphere can only be described as vibrant and bubbling with tech startups.  Waterloo (for those that don’t know), is an area in Southern Ontario, Canada with a population of 500,000+.  Surrounded by farmland for the most part, it is home to some stellar academic institutions that rival MIT and Stanford and a startup community that is making some serious waves.  So how can such an area be Canada’s startup capital?  Here are 5 reasons courtesy of my conference participation: 


  1. According to Iain Klugman, CEO of Communitech, there were 405 net new startups in the Waterloo region last year AND we’re looking to exceed this number for 2013 given current monthly net new startup rates.  Waterloo even showed up for the first time in the Startup Genome ranks last year.  Making this list is quite the accomplishment given Waterloo isn’t anywhere close in population size to any of the other heavy hitters.
  2. Thorsten Heinz, CEO of BlackBerry pointed out that it’s not where you live, it’s what you find where you live.  For BlackBerry, he has found a region of talent that continues to relentlessly push innovation and evolve smartphones into mobile computers.
  3. Patrick Pichette, SVP and CFO of Google Inc. explained that Google chose Waterloo to situate a key office because frankly they were running out of talent in Mountain View, California.  They purposely scouted locations that had the highest bar set for computer science and that fit culturally with Google.  Waterloo was a shoe-in.  Trivia note - did you know that Google’s gmail for iOS, Chrome’s touchscreen, and Google Fiber UI work is all being done out of Waterloo? 
  4. Perhaps the best current testament to our startup region is the BufferBox story.  BufferBox went from a University of Waterloo (uWaterloo) engineering project to a full-fledged startup to being bought by Google in 18 months.  Bootstrapped by pitch competitions, local Canadian government, and uWaterloo’s VeloCity program, BufferBox was incubated locally and then accelerated by Palo Alto startup program Y Combinator (that has seen the likes of Reddit, Dropbox, and Scribd just to name a few).  As Mike McCauley, co-founder of BufferBox highlighted, Waterloo has a solid reputation in Silicon Valley.  Of additional note - instead of staying in Silicon Valley, BufferBox chose to come back to Waterloo to work out of Google Waterloo’s office.
  5. BufferBox isn’t the only newest local startup hero.  Vidyard, Pebble, and ThalmicLabs have also popped up out of Waterloo.  Venture Capital firms like Sequoia Capital have also taken notice, and instead of waiting for our startups to go to California for seed money, they’re starting to come here. 


“Something is going on in Waterloo” Paul Graham, founder of Y Combinator has been quoted as saying.  He’s not the only one that has noticed.  SAP held its first startup forum outside of Palo Alto here at its SAP Waterloo labs, turning to Canada’s most innovative startups and universities to take SAP HANA to its limits.  This Wednesday March 13th, SAP Waterloo Labs will be hosting Ontario’s first DKOM and co-innovation will be a central focus topic discussed.  I, for one, cannot think of a better source for co-innovation inspiration than all of this great startup activity happening in our own backyard!


Innovate On! Waterloo --   

Ok, quick question - what is this:


CeBIT. 100 students from all around the world. Some coaches and experts. Almost 48 hours time. Enough food and drinks. And a lot of FUN?


No, it is not the CeBit spring break but the SAP InnoJam at CeBIT where we invited 100 students from all around the world and really diverse backgrounds ands skillsets. Goal was to work on 4 different challenges around social businesses like: How can we motivate people for a sustainable meat consumption? How can we encourage volunteers to give feedback about their work and inspire others to join? How can we improve the transparency for IT donations both for the donators and the NGOs getting the software or hardware?

Screen shot 2013-03-07 at 11.59.26 AM.png

And before we started to build first solutions using latest (SAP) technologies like SAP Hana, SAPUI5 or SAP Cloud we spent one Design Thinking day to first frame the problem better, to talk to the users to understand their needs and to create ideas and some first tangiable prototypes to get early feedback.


We did this in 10 (for sure inter-disciplinary) teams running in parallel: Timeboxed and energized, very well moderated and guided by Design Thinking coaches from SAP´s Design Thinking community.

Screen shot 2013-03-07 at 12.50.59 PM.png

And then it was time for coding all night long. Let´s see the results in the afternoon

You would like to get an good overview about the ideas and motivation behind Design Thinking? Who would like to understand the core elements - the team, the space and the process? And you would like to get inspiration how to start NOW?


Then you should have a deeper look in our now released book about Design Thinking (in German):


30minuten_design thinking.jpg




Yesterday I had the pleasure to talk in Mannheim about Design Thinking during the "Technologietage" from the DSAG, the german SAP user group.


Although the focus were clearly pure technological topics like the latest stuff from our labs (HANA, SAP Cloud, SAPUI5, mobile or how all of this fit together) it was a very positive experience for me to talk about how user-centered innovation could be achieved using Design Thinking methodologies. Not the technology should be the starting point but the user and her or his needs. This message was well-received and the long and energized discussions after my talk showed me, that there is a high interest into this topic.


If you are interested here are the presented slides (German only).


Screen shot 2013-02-28 at 9.19.36 AM.png


In the Part 2 we built a Node express app ,the Node server is up and running on port 7000



Now let's go with the ABAP!

We can make an Http Post request to the path /publish running on the node server on port 7000.

First we need to create a new Http destination using transaction SM59


On tab "Technical Settings Server" you specify our node server host localhost ,port :7000  and path  /publish 



On tab "Logon & Security" I set the basic authentication , user: SAP password: password


Test the connection



The express app.get( '/publish') responses with an ok status (200)




The following ABAP code makes an Http Post request with a json request Body (i'm using a simple concatenate statement but as always I suggest to use abap json document class by  Uwe Fetzer


DATA: http_dest TYPE rfcdest VALUE 'NODE_PUBLISH'.
 DATA: ld_client TYPE REF TO if_http_client.
 DATA: ld_request TYPE REF TO if_http_request.
       http_status TYPE SY-SUBRC.
 *Create the Http Client
   cl_http_client=>create_by_destination( EXPORTING
   destination = http_dest IMPORTING client = ld_client ).
 *Prepare the Request
   ld_request = ld_client->request.
   CALL METHOD ld_client->request->set_method(
     if_http_request=>co_request_method_post ). "POST
       NAME  = 'Content-Type'
       VALUE = 'application/json'.
   json = '{"hello":"world"}'.
       DATA = json.
       HTTP_INVALID_STATE         = 2
       HTTP_INVALID_TIMEOUT       = 4
       others                     = 5.
   if sy-subrc = 0.
     CALL METHOD ld_client->receive
         http_communication_failure = 1
         http_invalid_state         = 2
         http_processing_failed     = 3
         OTHERS                     = 4.
     if sy-subrc = 0.
       ld_client->response->get_status( IMPORTING code = http_status ).
       if http_status = 200.
         WRITE : / 'HTTP STATUS KO' , http_status.
   ld_client->close( ).


Executing the report, the message is sent correctly to node but there are no clients listening for it!



Now we can executing the simple client / javascript code  , opening 2 different Browsers (Firefox and Chrome) because we want to verify that our message will be triggered to all the connected clients


<script src="http://localhost:1337/socket.io/socket.io.js"></script>


var server = io.connect('http://localhost:1337');

server.on('SAP_Event', function (data) {


    alert('Hello ' + data.hello);




The node server is running...2 clients are connected...now we can executing the abap report again

(to get the complete code of Node server app check the previous blog)


Both the clients received the message triggered from ABAP and pushed by Node! The json message is received in realtime by the clients




A screencast to explain how it works is better then thousands words...in the final example i will trigger from abap a random name of color every 2 seconds, the color will be pushed to all the connected clients .Every client will use the received color to change the body background-color of the page!

The node server app doesn t change...because it simply emits the event with the json

Below the abap and the javascript..



DATA: http_dest TYPE rfcdest VALUE 'NODE_PUBLISH'.
 DATA: ld_client TYPE REF TO if_http_client.
 DATA: ld_request TYPE REF TO if_http_request.
       http_status TYPE SY-SUBRC.
 TYPES: begin of ty_color,
       end of ty_color.
 DATA: v_color TYPE ty_color.
 DATA: t_color TYPE TABLE OF ty_color,
       number_of_color type i.
   v_color-color = 'black'.
   append v_color to t_color.
   v_color-color = 'green'.
   append v_color to t_color.
   v_color-color = 'yellow'.
   append v_color to t_color.
   v_color-color = 'purple'.
   append v_color to t_color.
   v_color-color = 'blue'.
   append v_color to t_color.
   v_color-color = 'red'.
   append v_color to t_color.
   v_color-color = 'orange'.
   append v_color to t_color.
   v_color-color = 'brown'.
   append v_color to t_color.
   v_color-color = 'gray'.
   append v_color to t_color.
 *Create the Http Client
   cl_http_client=>create_by_destination( EXPORTING
   destination = http_dest IMPORTING client = ld_client ).
 *Prepare the Request
   ld_request = ld_client->request.
   CALL METHOD ld_client->request->set_method(
     if_http_request=>co_request_method_post ). "POST
       NAME  = 'Content-Type'
       VALUE = 'application/json'.
   DO 10 TIMES.
         RAN_INT_MAX = 9
         RAN_INT_MIN = 1
         RAN_INT     = number_of_color.
     READ TABLE t_color INTO v_color INDEX number_of_color.
     CONCATENATE '{"color":' '"' v_color '"}' INTO json.
         DATA = json.
         HTTP_INVALID_STATE         = 2
         HTTP_INVALID_TIMEOUT       = 4
         others                     = 5.
     if sy-subrc = 0.
       CALL METHOD ld_client->receive
           http_communication_failure = 1
           http_invalid_state         = 2
           http_processing_failed     = 3
           OTHERS                     = 4.
       if sy-subrc = 0.
         ld_client->response->get_status( IMPORTING code = http_status ).
         if http_status = 200.
           WRITE: / 'COLOR' , v_color-color ,  'SENT TO NODE'.
           WRITE : / 'HTTP STATUS KO' , http_status.
   ld_client->close( ).




<script src="http://localhost:1337/socket.io/socket.io.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
var server = io.connect('http://localhost:1337');
server.on('SAP_Event', function (data) {




and this is the screencast!

After you install Node and our first "hello world" application described in Part 1 ,  we are ready to build our Node Server app to manage the websocket connections


Node Modules

The first line of code in HelloWorld.js was:

var http = require('http'); //requiring HTTP module (http.js)


It means we are requiring the HTTP library and HTTP.js file , for example we can define our own simple module like this :



var sum = function(a,b){
 return a+b;
exports.sum = sum; //return sum function


and require it in App.js

var myModule = require('./myModule');  //requiring myModule.js
var result = myModule.sum(2,1);
console.log(result); //output 3



To returning a result of a "require call"  we must use the exports object




NPM - Node Package Manager - https://npmjs.org/

npm is Node’s package manager. It maintains a registry of Node modules and allows one-line installation and version management of third-party packages. You can find modules in npm from the command line using npm search search term

Means, Garann. “Node for Front-End Developers.” O'Reilly Media, 2012


To build our application we need to require 2 modules :

  • Express, the most popular web application framework for node
  • Socket.io , "the cross-browser Websocket for realtime apps"


We can install a node Module locally or globally ,the node guideline says we should use a global install if the package

needs to be accessed on the command line .For our purpose we'll install both locally but if you want to learn more about local vs global check this blog



the command is : npm install module

so you need to digit from the command line  npm install socket.io and  npm install express to install them.



If everything is OK , we'll have a new folder "node_modules" containing all the folders modules




What is Socket.IO ?

Socket.IO aims to make realtime apps possible in every browser and mobile device, blurring the differences between the different transport mechanisms. It's care-free realtime 100% in JavaScript.




Socket.io is quite easy to use , it provides a server and a client libraries , the  example described in socket.io homepage shows how it's simple to build a realtime app.



var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {


<script src="/socket.io/socket.io.js"></script><script>
  var socket = io.connect('http://localhost');
  socket.on('news', function (data) {
    socket.emit('my other event', { my: 'data' });

The server for every connected client ( on 'connection' event) emits a news event with an "hello world" json object , the client listens on news event (triggered from the server) , it logs the "hello world" object and emits another event 'my other event' to the server. Is not so difficult , right?



Our websocket APP

How to trigger realtime events from ABAP?

The idea is simple..we can make from ABAP an HTTP request to the Node Express application (in our case , running on the same host of the SAP instance). The message will be pushed in realtime to all the connected clients.

The difference compared to my old experiments using pusher.com is that now we have the full control to the websocket server built with Node




This is our Server.js that we'll use to trigger messages from Abap to all the clients:


var express = require('express');
var io = require("socket.io").listen(1337); // create socket.io server on port 1337
function authorize(username, password) {
    return 'SAP' === username & 'password' === password;
var app = express();
var auth = express.basicAuth(authorize);
app.configure(function () {
app.get('/publish', auth, function (request, response) {
    response.send("Server running"); //Ping for SM59 Test
app.post('/publish', auth, function (request, response) {
    io.sockets.emit("SAP_Event", request.body);
    console.log("SAP message:" + JSON.stringify(request.body));
io.sockets.on('connection', function (client) {
    console.log('Client connected...');
app.listen(7000); // Express /publish listening on 7000
console.log('Server Running...');


Once you create an Express instance with app = express() , it's possible to catch the Http Request  using the Express "application routing mechanism"    app.HttpVerb

A "basic Authentication" is required for all request to path /publish  , from Abap we'll make an HTTP POST request to the URI  with a JSON in Request Body, then the io.sockets.emit("SAP_Event",request.body) will trigger the JSON to all the connected clients


A simple Html/Javascript client listening for the "SAP_Event" messages is :

<script src="http://localhost:1337/socket.io/socket.io.js"></script>
var server = io.connect('http://localhost:1337');
server.on('SAP_Event', function (data) {


Let's start the Server.js with node Server.js from the CMD



Opening a browser and executing the javascript/client side we can see that the client connection is  successfully from the Server logs



Our websocket Node Server is running , in the part 3 we'll see how to trigger the messages from ABAP to the connected clients and I'll post a final video to see the "magic" of the realtime messages


All trademarks and registered trademarks are the property of their respective owners

Last year , I wrote 2 blogs about an integration between Html5 Websockets functionalties and Abap web application server through the Sap Code Exchange project Abap Pusher by Patrizia Rossi and me.


A WebSocket is a web technology providing full-duplex communications channels over a single TCP connection,for more details you can check my old blog about it.


In a few words, Abap Pusher uses the http rest api of  Pusher.com Software As a Service,then our messages will be distributed from the pusher server to all the connected clients (pusher provides a lot of client libraries ).


This solution has a lot of benefits:

  • we don't need a server to manage websockets connections
  • a SAAS solution provides a lot of useful features ( monitoring, debug, apps management , autentication mechanism, etc )
  • a SAAS provides a lot of client libraries ( Java,Objective C,Javascript ,etc..)


A cloud service is a good solution but some people might say: "I don' t want to use a proprietary solution and a cloud service,

I want my own local server that supports websocket connections and realtime messages".


Ok,in these series of blog I will try to introduce the powerful of Node.js ,a perfect solution to build our simple websocket server application.


What is Node.js?


Node.js is a platform built on Chrome’s JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices




The revolution of Node.js is programming using Javascript from the Server side : it's very useful to create realtime applications,large file uploading and ,more in general, scalable network applications .



Node.js is fast because it runs on the Google V8 Javascript Engine




Node.js is event-driven (the asynchronous nature of Javascript)

when an operation is completed it triggers a callback function ( NON-BLOCKING ) , in Node.js there isn't a multi-thread concept but only one single thread.


a NON-BLOCKING example , Reading a File :


fs.readFile("./File.txt", function (err, content) {
     console.log("This will be logged after");
console.log("This will be logged first");




Go to http://nodejs.org/download/ and download it the right version for you platform (I'm using the Windows version)



To check if the installation was succesfull type 




at the command line and you'll be dropped into the node REPL ( Read-Eval-Print-Loop, http://nodejs.org/api/repl.html ) , inside REPL you can write any JavaScript  and it will be executed.



Now we are ready to write our first Node.js server.


Our first "Hello World"

var http = require('http'); //requiring a module
  function (request, response)
    response.write('Hello World!');
console.log('Server running on port 8000');


Copy an paste inside a new js file HelloWorld.js


  and type 

node HelloWorld.js 

at the command line to start the server




Ok,our server is running on http://localhost:8000  , now open a browser and try to digit the url ,we'll see our server response with the "Hello World




In the part 2 I will show how to use the NPM Node Package Manager to installing  external modules such as Express

(probably the most populare Node web framework) and Socket.io to build our websocket node application.



All trademarks and registered trademarks are the property of their respective owners

Hope all are celebrated the New Year. Most of them filled with new hopes and also created some new plans for this New Year.


I celebrated New Year at Peace retreat on Mount Abu in Silence.  It was calm and cool environment. It brings more clarity in my mind. I looked lot of things deep. One of them is SAP’s new development strategy using Design Thinking. 


Most of my carrier, I never heard the words about human values like “Empathy” , “Compassion”, “Acceptance “  in business environments specially inside the office, In 2011 SAP TechEd, first time I heard the word “Empathy” very loudly, clearly with more meaning. I was so happy that finally every one realized the importance of human values on business, especially on product development.


Followed by 2012 TechEd, I was one of the fortunate invited to attend the design thinking workshop and got opportunity to listen directly from the slim and Lakshman Pachineela Seshadri. Later I had personal meeting with Marilyn Pratt discussing about practical way of bringing the value of empathy in design thinking. After all, during the retreat, I had good time to go deep and analyse more on these areas.


Through this blog I would like to share my perspective and hope on this new SAP’s development strategy as developer and also as key user.



Understanding clearly



Last month, I read the blog “Debunking Empathy” and read some of the comments too. I felt that there are still more clarification needed about Empathy and difference between empathy and sympathy, let me explain these with small example which I got in one of my workshops.


Sympathy: I feed the beggar, because I understood and accept them. It weakens me, but saves our relationship.


Apathy: I don’t even turn to look at the beggar, because not accept them, hence not ready to understand them. This not weakens me but destroys our relationship.


Empathy: I seek to understand the other and make an independent choice on whether I want to agree with them or not. I can feel with the hunger of the beggar, but I don’t agree that begging is the solution. He could always take up work; I offer him other chance, than feeding him. Empathy makes both of the relationships stronger.



Realizing Purpose



I can get easily the role of empathy in design thinking from the blog The Role of Empathy in Design Thinking , but I realized it only in the workshop through wallet exercise. When Lakshman asked to develop one good wallet model, I not even thought of whether it is for male or female. I spent 10 min and created wonderful, colorful stylish designed wallet for my female friend as below,




But later I come to know that he asked to create wallet for the partner who is next to me. I can sense my lack of understanding.


After the guidance from the design thinking team, I started to listen carefully to my partner, about his wallet’s requirement. some of his requirement are, he want wallet, but don’t want to carry cash, don’t want carry cards. It should be secure, should be stylish, should be slim, should increase his personality.


I listened to him 1 min, and understood that my 10 min work is waste of time. And next I spent only 5 min developed wonderful solution for him. Its ultra slim Iphone 9S as below,





I listened, understand him and lean my thoughts and discovered a perfect and innovative solution for him. Moreover I saved energy, time, resources. Since then, I am always willing to listen; I could say I trained to listen carefully. It is increases the trust and gained new friendships.


If this is in the big picture, should help to increase the customer's trust and also helps to gain new customers.



Some obstacles



It is my logical brain always bring such questions, why should I listen to him? What a funny requirement? Etc...  Nothing is wrong in making these kinds of questions. It is the human tendency. But make sure these questions are not leading you to negative direction. We need tremendous courage to stick on/



Sometimes we may feel the difficulty in empathize the people in different situations.  I could say, based on our Role, Responsibility, and Relationship the level of empathy differs.  These are sometime supports great and sometime become great obstacles. For example,


Role: I am consultant, not into the depth of developer. (Other typical example: Most of the manager faces difficult to empathize team members during appraisal, though he might good other time ).


Responsibility:  I am not responsible for identify the root cause; let someone find that, later I develop.


Relationship: Cold war; don’t want to listen any more.


Every one crossed all these areas. We can check our self and our feelings on those timings. It is all lack of other human values, virtues related to Empathy. We can overcome these obstacles by regular practice and keep on cultivating our self as genuine person.  Attending some of the design thinking workshops, courses, realizing your own insights by Meditation also help.



New year, New Hope



I feel that healthy and struggle free mind is needed to listen and understand others. Human values like Empathy can’t be learn by reading books. We can attain them only with the regular practice.


This is not mathematical formula like add this, subtract that for getting result. It is all by experience, genuine understanding of the need and constant practice to bring in reality. Design thinking workshops, books, courses are the best tools. Now SAP comes forward, creating awareness, providing training and building trust.


As I heard from 2012 SAP TechEd Keynote, SAP following this new development strategy and delivering product based on end user experience. There are lots of products already on line developed by design thinking capabilities.


Now it is time for all of us.  Lets realize it, practice it and develop smart product for the healthy and happy world.


Wishing all for the most prosperous successful New year 2013.

Electronic Data Interchange - EDI is the computer-to-computer exchange of business data and documents between companies using standard formats recognized both nationally and internationally and allows for computer transactions that require no human involvement. 


History: The common idea behind EDI was initiated by a group of railroad companies in the mid 1960’s, in the United States. 


EDI was driven by many industry sectors and simply say its supports almost all industry business.


Advantage: EDI replaces paper transactions with electronic transactions, Saving 50% of time and enabling automatic document processing for getting lowering operating cost. Reducing the human error to increase business accuracy and increase productivity.



EDI integration with SAP : It will gives you the facility to receive purchase orders from your customers and send back invoices. It is easy to install & use.


edi 1.jpg




Vasanth S

Web ::Tweet

Daily Paper


Already in summer 2011, Global IT took the first steps of preparing SAP for UC.

In order to make SAP's employees more agile and productive Global IT enabled everyone @ SAP with Lync.

Today federation to external parties and +8k user enabled with Enterprise Voice make SAP’s employees more powerful than ever – and there is a much more to come in 2013!
Read below how YOU get there too and what you need to consider.

In the last few years Unified Communication (UC) has become more and more important. Gartner defines UC products (equipment, software and services) as those that facilitate the use of multiple enterprise communications methods. UC products integrate communication channels (media), networks and systems, as well as IT business applications and, in some cases, consumer applications and devices.

UC includes six broad communication product areas:

    • Voice and Telephony
    • Conferencing
    • Messaging
    • Presence and IM
    • Clients
    • Communications-Enabled Applications



Project Motivation

The main drivers for implementing a new UC solution at SAP were:

    • The need to replace traditional telephony systems which have become outdated.
    • The necessity to get rid of isolated systems and to standardize the UC solution including the support model in all SAP locations.
    • Increasing demand for solutions to support the mobile workforce.
    • A reduction of the total cost of ownership.

A VoIP backbone enabled infrastructure will replace traditional telephony systems. The infrastructure was decided to be fully managed by an external provider covering backend infrastructure, operation and support. Softphones are the preferred device offering, but hard phones will be available if needed (with the goal to reduce hard phones overall). Further important topics are the integration of mobile or home/hotel/… phones in communication scenarios (Mobility) and the integration in most common desktop applications (Office, click to dial, …) as well.




Decision for Microsoft Lync

Beginning in the summer of 2011, Global IT took the first steps of preparing SAP for UC. In order to define the best option for SAP, a user pilot was launched which compared two market leading UC applications: Cisco’s CUPC and Microsoft Lync.

Based on favorable survey results showing employees preferred Microsoft Lync, consequently the decision was made to implement Microsoft Lync.

Key Features in a nutshell

  • Using the PC to make and receive phone calls.
  • Working outside the office the desk phone follows the employees wherever they are connected (home, a distant office, hotel, etc.).
  • Lync presence shows when a person is engaged on the phone and also presence information for contacts. 
  • Video chat capabilities are enabled up to 8 participants.
  • Instant messaging with Office integration.
  • Application sharing with a colleague or group (up to 8 participants).




Timeline - high-level:




The interim platform now supports more than 8.000 employees. In July 2012, HP was chosen as the official provider for Lync and is also responsible for end user support. First level support is done by SAP IT Help Desk and HP handling 2nd level requests when necessary.
Now we are in the phase of designing/implementing the final Lync 2013 backend with data centers in America and Germany. In parallel, the Migration & Deployment to SAP locations continues with the target to have around 30.000 ports live at the end of 2013 and to finish the project in 2015 with full port coverage.
In general the deployment follows an office by office approach. In cases where the office is large, the deployment will happen as phased approach (starting with voluntary migrations and in time, scheduled migrations). A cutover approach is used for smaller offices.



Best Practices

  • Project needs attention and support from board level up to provide a clear message for the end user.
  • Make user aware of the advantages of the future solution from a user and company perspective.
  • Focus on flexibility (e.g. home offices, travel, open desk, etc.) and workplace attractiveness (ease of use, integration, etc.) and avoid stressing the expected cost savings.
  • Take care of change and expectation management as the user impact is significant for a successful implementation.
  • IP “hard” phones should be offered on user request. Choose high-quality headsets and offer choice for the user. For emergency phones, make sure they work will work in a disaster situation.
  • Decommissioning of the old PBXs is an integral part of the whole project.
  • Keep legal requirements in mind.
  • Ensure highest availability and performance for the Lync backend and the network (WAN and Wi-Fi).




In my function as a software architect and through my activities on SCN, I meet many different people, and sometimes they ask for advice on how they could become software architects themselves.


I could write or talk for hours about many different aspects of the question, but I’ll try to be brief. I did it again – so here are the four crucial ingredients to being a good software architect.




1. Experience


Software design is not a science, and despite many claims to the contrary, it isn’t even much of an engineering discipline yet. There are no deterministic rules or procedures for making good software, or making software well. It is still very much a craft, and some exceptional craftsmen might even reach a level of mastery that deserves the label “art”.


There are books and classes on software architecture, but those don’t teach anybody how to be good software architects. More precisely, they go only so far in making students produce software architectures that work, and they will make only few students better judges of good or bad software architectures. However, they do have great merits in that they can help establish a shared vocabulary and make it easier to discuss software architectures with others. 


Good software architects usually distill their architecture skills out of their experience as developers. As a developer gains experience, they become better and better at making higher-level design decisions, and expand the scope of their work accordingly. With each new level, the granularity of their scope changes and they govern collections of software artifacts at a higher order of magnitude:


  • The first level (Developer) might be the ability to make good decisions about the design of a small functional unit, such as a single class, report, or function group.
  • Second level (Senior Developer): designing larger functional units, such as an entire package consisting of several (independently reusable) classes, structures, reports, tables, and so on.
  • Third level (Application Architect): designing an entire application, making decisions on which frameworks to use, how to implement persistence, extensibility, configurability, and so on.
  • Fourth level (Enterprise Architect): designing and governing multiple applications, making decisions on application landscape design, and governing the interplay of forces between several applications and larger software components.
  • Fifth level (Application and/or Technology Strategist): Laying out the strategies and rules for the evolution of entire application landscapes and technology platforms.


It usually takes a few years to go through this growth process. That being said, age or years of experience aren’t necessarily reliable predictors of how far someone can have progressed.


People start at different ages: I started developing software for money at age 12 and built my first libraries of reuse components at age 11. Others start when they finish university – in Germany, this could be around the age of 25, 26.


People learn at different paces: The most gifted developer I have worked with needed about two years to learn what I had learned in six years. Similarly, after one year I felt more advanced than my senior colleagues who had ten years of SAP experience.


So there’s no point in saying that someone has to be at least 16, or 26, or 30, or 40 to reach maturity as a software architect. Each of these ages is the right age for someone. On the other hand, even though some start early and some are very fast, there are no shortcuts: It does take a significant amount of hands-on development experience to become very good at making high-level design decisions. The higher the level, the more experience is required.



2. Creativity

Making software is about making things up. We produce inventions. Good problem solving in software development combines a highly analytical (the Ancient Greek root of the word means “to break something down into its constituents”, “to decompose”) approach with a synthetic (from Ancient Greek “to put together”, “to compose”) approach.


Being creative, imaginative, inventive is something that cannot be taught to an unimaginative person. Software architects who don’t have at least a bit of an imaginative streak are rarely able to develop good judgment even in simple matters. If I were to hire a software architect today, I would probe for signs of imagination and vision in the candidate’s background:


  • fantasy role-playing games (RPG), writing fiction, engaging in story-telling
  • engineering, building, making technical inventions, developing their own computer programs
  • developing social, philosophical, or political visions, engaging in community-building



3. The Architecture Instinct

I came across the notion of “architecture instinct” in this article about architectural anti-patterns, which I highly recommend: http://sourcemaking.com/antipatterns/the-grand-old-duke-of-york


To quote from the article:


“Programming skill does not equate to skill in defining abstractions. There appear to be two distinct groups involved in software development: abstractionists and their counterparts (whom we call implementationists) Abstractionists are comfortable discussing software design concepts without delving into implementation details.


As stated, they possess the architecture instinct, the ability to define and explain good software abstractions. Implementationists, on the other hand, often require source code examples before they can grasp abstract concepts; they are not particularly adept at defining new abstractions that can be readily understood by other developers.”



4. Street Credibility


This is the reason I’m writing this blog post. This aspect is easily overlooked, or at least underestimated. If you take the first three ingredients – experience, creativity, architecture instinct – and put them together, what you have is basically the recipe for unpopular opinions. An architect equipped with these three things will


  • take the long-term perspective among people who only look until the next deadline,
  • anticipate changing or additional requirements nobody else sees,
  • warn from designs that look like the quick and easy solution to everybody else,
  • ask developers to jump through a number of hoops that may seem counter-intuitive and unnecessary to them,
  • tell experienced developers that what they’re doing works right now but it’s still wrong,
  • try to convince senior managers to spend more time and money than seems necessary and sufficient at the moment.


In other words, they will appear like a complete and utter fool right out of the loony bin, or perhaps coming straight from the ivory tower where the kind of software architects nobody listens to are educated.


What makes the situation even harder for the architect is that their role doesn’t usually give them any formal authority that would allow them to push their opinion through and force the other people on the project to follow their judgment.  Neither do they own the budget, nor are they in charge of the execution – so all a software architect can really demand is to be heard, and that their recommendations are given due consideration.


That being said, how can software architects escape their likely fate as a whining annoyance, and become highly effective, respected advisors whose recommendations the projects actually follow – even when it hurts? The answer is simple: They have to be very convincing. Being very convincing, in turn, requires a number of components.


Communicate well


Of course it’s helpful if you’re a Jedi in command of the famous Jedi mind tricks (“These are not the tables you are looking for.”), skilled in covert and conversational hypnosis, and generally a rhetorically skilled speaker. Being empathetic, understanding where person you are talking to is coming from, and being able to speak their language is part of this component which I would sum up under “communication skills”.



Fig. 1: "These aren't the tables you are looking for."



Be right

It may sound silly, but you’ll only be respected by smart people if you turn out to be right at least reasonably frequently. This involves making claims and predictions that are concrete enough to be tested. You have to know what you’re talking about, and talk about what you know. (It’s also okay to go out on a limb and present opinions in an area where you don’t have solid knowledge – but then you should be honest and make the appropriate disclaimers.)



Earn your credibility


Yes, you can make an excellent impression in one meeting, but: To gain the standing and credibility that makes others rely comfortably on you in important matters takes many years. A senior enterprise architect is in a position where C-level executives and board members must sometimes bet their careers on the correctness of their judgment, and where errors can cause millions of dollars or Euros to be misspent. Getting there takes an excellent track record that is best earned over a few years, in several different positions, with extensive experience in a wide-ranging array of topics and technologies.


Part of your credibility is the respect you enjoy in various communities. If you’re a respected member of the SCN community with a track record of great contributions, perhaps even a top contributor in one or two fields, this might be beneficial to your credibility. Similarly, if you’re a respected member of the developers community at your employer and colleagues tend to seek your advice, this might persuade others to listen to you more carefully.


In summary, to build the standing you need in order to push through unpopular positions, or to bet their careers on you, you need to convince a wide base of people in your field that your word now is of actual value to them, because it was in the past.


It all boils down to: You need to provide good value to many people over years.




In order to be a good software architect, you need to provide good value to many people over years. Then they will follow your advice even if it hurts, or bet their careers on the correctness of your advice.


SAP Screen Personas  - "Personalization without Programming"

Simple, Drag and Drop approach to modify many common SAP GUI screens

SAP is developed and has released a new GUI customization tool currently known as Personas or SAP Screen Personas. Personas allows IT departments and even individual SAP users to customize their screen layouts in the SAP GUI through an intuitive drag-and-drop interface.

SAP Screen Personas 1.0 has been released on Dec. 7th, 2012.

Vishal explained the importance of design and user experience. He used SAP Screen Personas as one example of how SAP is innovating to address customer needs in this area.



SAP Personas was designed to be easy for a user without any technical knowledge of SAP or ABAP to customize SAP views. Its really Simple, Drag and Drop approach.

Sam Yen, Global Head of Design and User Experience at SAP talks about Personas


Reduce effort to customize screens and empower superusers

I believe myself to be an innovator...a great developer...someone that goes beyond to make the impossible...but...there's always someone else making things that to me...seem impossible...


This is a small tribute to those people who had motivate me and always will...in no particular order...some of my all time heroes...


Ivan Femia - abap2xlsx - Generate your professional Excel spreadsheet from ABAP


I remember, a couple of years ago that I need to developer a really complex ALV report...that seems impossible to build...so my first thought was to use OLE and build it as an Excel file...I had done that before, but it was slow and buggy...somehow...like send from heaven...abap2xlsx came down to me and hit me in the face...it was totally awesome! How this guy Ivan was? How could he build something like this? It was just what I needed! I quickly install it, make a short report and show it to the functional...she love it as well...and I start working on the real report...after some hard work (and I'm proud to say that I even made my small contribution to the project) the report was finished and really shining...the customer love it and asked for more...really awesome...


Gregor Wolf - Community Project ZGEOCODE


It's really hard and even maybe a blasphemy to name Mr. Wolf and show only one blog...Gregor has contribute (and he's still doing it) to so many community projects...that it's think it's fair to make this analogy..."Gregor Wolf is to the community, what the flight tables are to every ERP installation". He's just an amazing guy with the biggest heart...and ZGEOCODE is just an example of what he's capable of...pure magic...


Juergen Schmerder - New from SAP Research: Blue Ruby - a Ruby VM in ABAP


Juergen doesn't blog as much as I would like him to do...but he do...you gotta hold on your chair...Blue Ruby was to me...a revelation...almost made me cry when I read about it...I couldn't believe that something like that could happen in the ABAP world...and while it didn't lasted too long...Blue Ruby will be always in my heart...


Thomas Jung - New ABAP Editor Backport!


Talk about Thomas, is talk about raw programming energy...this guy is so good, you can't believe he's a regular human person...when he wrote about porting the new ABAP Editor to older releases was like being blind and open your eyes for the first time...or waking up from the Matrix...whatever you like...Thomas has been the king of ABAP, BSP, WebDynpro and now SAP HANA...talking about SAP and not mention Thomas should be a crime...because this guy has contribute so much, that I could never speak talking about him...just amazing!


Piers Harding - Scripting - Whats your fancy - Perl, Python or Ruby?


Piers is and always will be my totally and complete hero...I mean...he created connectors RFC connector for Perl, Ruby and Python...how crazy is that?! You know why I learned Ruby and Python? Because of Piers! Sure I did...it was because his RFC connectors that I said to myself..."Dude...you like Scripting Languages...you like PHP...but this guy is offering a whole new world with Ruby and Python...go get them!"...but the lovely story doesn't end there...you know that I have dedicated myself to promote the integration of SAP HANA and R in many blogs...and because my current title, I haven't done any ABAP in more than a year...well...Piers created an RFC connector for R too! I couldn't believe it when I saw it...and one of my biggest achievements and something that will make proud forever, is that I worked very closed to him to create the Windows version of the R RFC connector...it was one of my "Wayne's World" moments...


Daniel McWeeney and Ed Herrmann - SAPlink One Week, One New Version -- UPDATE


I remember...that a long time ago...in my first years in the ABAP world...my team needed to make a backup of an SAP system...so we had to copy and paste tables and programs in notepads to reproduce them on a newer system (Looking back...I could say...WTF?!)...anyway...at that time I decided to create a couple of applications to automated the process...ABAP applications that would read all the Z tables and programs and create notepad files that could be easily ported into a new system...some years later...SAPLink saw the light...it was an amazing program...not a couple...but a single program that did what my program did...only...100 times better...in single XML file you could have a complete application (The main program, includes, tables, structures, etc)...these guys, that sadly are not involved with the community any more (We miss you guys), create the tool that every abaper in the world was looking for...a simple application that in my humble opinion...changed the world of ABAP consulting...


To finish this blog, I just would like to say..."Never stop dreaming...never stop creating...never stop being innovative...because your passion, it's what makes our world go round"...

Home matches and challenges

I love presenting to techies – they’re my folks, and speaking with them and exchanging ideas comes as naturally to me as gathering around the kitchen table with the family and shooting the breeze. (Recent SAP Inside Track Netherlands in Eindhoven, organized by the fabulous Twan van den Broek and others, where I hosted two sessions, was such an event.)


I also love a challenge – so it’s nice to present to a crowd where it’s not necessarily a home match. Therefore, I particularly enjoy presenting technology to people who are either indifferent or even averse to technology per se. (I’ll explain in a minute why I added “per se” here.) The challenge is to captivate them by speaking to them in their language, about things that matter to them.


A difficult audience

The most recent instance, which prompted me to write this blog post, was just yesterday. I spoke to a bunch of colleagues who have a reputation for being an especially difficult audience: a group of managers with a purely functional background, each overseeing a large functional domain; super-busy people who rush from meeting to meeting and write a hundred emails per day, many of them while someone else is trying in vain to capture their attention. They’re unique in their multi-faceted role as managers, experts and generalists, and they know it. Don’t expect any freebies when presenting to them: The moment your talk fails to be relevant, they’ll whip out the phone and start taking calls, or have a loud discussion with their neighbor, or walk out of the room and make the phone glow in the hallway.


They aren’t technologists and don’t care much for technology as such, but as product owners of the suite of SAP-based business applications my employer creates, they prioritize all change requests to the applications suite and decide which features will be implemented, and in which release.

I, on the other hand, am 100% a technologist and technology strategist. My job was to explain to those functional folks about a particular new technology in the User Interface (UI) area, and reach accordance on a strategy about it. So I did it. I put myself in the shoes of my audience and tried to say only things that would be relevant to them.


What technology means to non-techie audiences

While you, as a technologist, may master difficult technologies on a daily basis and derive lots of pleasure and self-confidence from it, it can be a touchy subject and frequent source of frustration to non-technologists.


Key statement: End-users often (rightfully) experience software as built with disregard or even contempt for them and their needs.


So when we as technologists talk to non-technologists, we need to make it doubly clear that we’re not speaking from the ivory tower but genuinely interested in providing business value and good usability. After decades of working with barely usable software, end-users may find that the idea of technologists who care for them takes some getting used to. It’s our job to be convincing here and to demonstrate clearly that we’re not advocating a particular technology because it is so much fun to work with for developers, but because of the value it provides to the business. (Even if we put the business value first, there’ll be plenty of techie fun in it for us – so we can easily afford to be real here.)


Only technologists are interested in technology per se: for its elegance, for the superiority of its concepts to competing concepts, for symmetry and beauty, and originality and quirkiness, for being a reliable old friend, for ingenuity that strikes like a bolt of lightning, for being a better-to-handle tool than others, for allowing us to reach mastery quicker or to reach a deeper mastery, and so on. These are techies’ reasons to love a particular technology, and they’re sound and valid. But when we speak to non-techies, we should remember that they’re not interested in the virtues of technologies of technology per se, but about what’s in it for them: the business value (however indirect) provided by technology.


Dimensions that matter

To your audience, the most important dimensions (apart from the actual functionality) are costs and time. When you present one or perhaps even several alternative technological solutions, explain how costly they will be (or what plan you suggest for finding out, such as building a prototype first), and how long it will take. They’ll love you for it. Another dimension they’re interested in is complexity (which impacts reliability, stability, maintenance costs, the ability of the team to handle it, and so on). And if they’re smart, they’ll care about flexibility (also influenced by complexity), the ability to change things later.

Putting it all together, you could say something like:


“Solution A and B are functionally equivalent and roughly equally expensive. Solution A is faster – we can do it in three months –, but at the price of a higher complexity, so it’s more error-prone and less reliable, and it will be more difficult to change things later on. Solution B takes more time – we have to wait for SAP release XYZ and can be done in six to nine months –, but it will be a rock-solid solution with better flexibility.”


Remember the list: functionality, costs, time, complexity, flexibility.


Six ways to be relevant to a non-techie audience

  1. Remember that to your audience, technology is not a play toy – it’s a bother and a means to an end. They put up with it not for fun but because it can help them if applied well, and make their lives hell when applied incorrectly or carelessly.
  2. Be relevant, and make the technology relevant: Focus not on how it works, but what it can do for your audience. Name existing pain-points and explain how the technology can bring relief. Explain new possibilities and opportunities from a business perspective. Real-world use cases are king! Keep a laser-like focus on the question: What’s in it for them?
  3. Pick up the ball and run with it: When someone from the audience articulates a new pain-point or use case, they’re giving you the golden key to being relevant to them. Explain how the technology can help here, and recur to those points often. Generally, try as hard as you can to map what you have to offer to the audience’s needs. Watch your audience carefully to find out when you hit a sweet or sore spot. Your audience really tells you all you need to know. It’s your job to observe and listen as much as it’s your job to speak.
  4. Speak about holes – not drills: Don’t explain how the drill works, and what the relative merits and disadvantages of a dozen current and future drilling technologies are – to someone who just wants a simple hole in the wall. Keep in mind who’s merely interested in holes and who’s interested in drills, and don’t talk about drills to the holes folks (unless it’s really relevant to them). I learned this from one of member of the aforementioned group and it was one of my most valuable lessons ever.
  5. Keep in mind the dimensions that matter: functionality, costs, time, complexity, and flexibility.
  6. Speak from the heart: Yes, you should speak in the language of the audience, and about what matters to the audience – but it should come from the heart and you should be yourself if you want to engage your audience. So look for the intersection, find the common denominator, and use that as your starting position. Talk about what matters to both you and the audience, in a clear and natural language that suits both you and your audience. Common sense should work as a common denominator. 


Back to my difficult session

My session with the difficult folks went very well. I tried hard to be relevant to them, and it worked. They experienced me not as “the other”, the technologist from another planet, but as a reasonable guy who had something relevant to share. I could tell from the way they engaged in a constructive discussion, remained focused, and from body language and eye contact. So I was quite happy after the talk (which, because of many questions and an interesting discussion, took three times as long as scheduled).


But the biggest compliment came this morning when I met one of my administrative colleagues, who was in the meeting to take notes and follow up on to-dos. She said that she didn’t care for technology, but had liked my presentation because it was clear and calm and she had understood everything. She even explained the key concepts to another colleague who joined our discussion. I love it – and I consider this the highest accolade: being relevant to someone who not only has no natural affinity to your topic, but to whom you aren’t even relevant per their job role. When they’re merely bystanders as far as your content is concerned, and still they find it interesting and engage – that means you’ve communicated well. This is why my administrative colleagues’ feedback flattered me immensely.


There’s no better thrill

And that’s what I want to share: You, too, can do it. Just put yourself in the other person’s shoes, try hard to be relevant to them, and you’ll experience the rush of a communication well done. There’s no better thrill.

Vijay Vijayasankar (@vijayasankarv on twitter) asks in his recent blog, "Can Enterprise Software Innovation Be Industrialized?" Vijay explains that he used to believe it could, and gives a nuanced view on why he has lost that belief. Specifically, he asks, why doesn't innovation seem to scale?

I'd like to throw a quick idea into the discourse with this six minutes video response.


I respond with the suggestion to look at what prevents innovation, and if that scales, and whether or not it could be removed, with an analogy from neurology.





Why video?

  • I'm a slow writer and never would have managed to get it out of the door otherwise.
  • It's fun to explore this more conversational format, especially when an actual discourse is taking place.


Short notes

Marilyn Pratt has taught me to accomodate those viewers and readers who don't feel like watching a video. I understand because I also consume written text better than audio or video, so here are some quick notes:

  • Maybe it's not about innovation scales, but about whether or not the things that prevent innovation scale.
  • Vijay's blog post reminds me of a book by Neurologist Oliver Sacks I read some time ago.
  • Brain damage can cause savant (genius) level abilities to surface.
  • This happens when the injury destroys an inhibiting mechanism.
  • The potential to perform at that level has been there along along but was kept on a leash by the inhibiting factor.
  • This happens to ensure the overall functionality of the brain.
  • There is a link to autism and the savant capatibities some autists display (see "Rain Man" for a popularized example).
  • The potential for innovation is everywhere in the companies but so are inhibiting factors.
  • Shoutout to Michael Bechauf who suggested Open Source as a driver for innovation through learning from each other, knowledge management, etc.
  • Inhibiting factors scale very well: It's easy to hire 5,000 bureaucrats.
  • In the enterprise, an innovative layer may be underneath the inhibiting layer.
  • Removing it can be difficult because the inhibiting mechanisms are there for a reason.
  • But it might still be worth the price (more chaos) because the competitive advantage from innovation is crucial.


Filter Blog

By author:
By date:
By tag: