Duet Case Study – Auckland Regional Council

Duet, SAP May 26th, 2008

There’s a new video testimonial at www.duet.com about Duet implementation in Auckland Regional Council.
Check it out at http://www.duet.com/MediaLibrary/Videos/ARCCustomerTestimonialFlash/tabid/257/Default.aspx

(Unfortunately, no embed option. SAP still has something to learn how to let go…)

Tags: , , , , ,

Want to Meet Me (and the Duet team) at TechEd?

Events March 18th, 2008

Microsoft finally opened up the Meetings application for TechEd at http://www.face2facemeeting.com/teched/

So, if you want to meet up and talk (about anything) just schedule a meeting :-)

The easiest way to find me there is to going to the Find Participants screen and looking for Duet as keyword.
You’ll be able to find me and my teammates from the Duet team at SAP who are coming to TechEd.

See you there…

Technorati Tags: ,,,

Tags: , , ,

Apple iPhone Announcement

Gaming, Software Industry March 6th, 2008

TechCrunch and Macworld were live blogging from the Apple iPhone Software Roadmap event at the Apple campus at Cupertino.

Below are the main takes from today’s announcements (plus some commentary of course):

  • Long list of features aimed at the Enterprise market:
    • Push email\calendar\contacts
    • Global address list
    • Cisco IPsec VPN
    • Two-factor authentication, certificates and identities.
    • Enterprise-class Wi-Fi with WPA2/802.1x.
    • Security tools to enforce security policies.
    • Deployment tools to allow an organization to configure and set thousands of devices easily.
    • Data Security – Ability to protect iPhone data and remotely wipe it.
  • Apple licensed the Microsoft Exchange ActiveSync protocol and will feature full Exchange sync support on the next iPhone update.

“With ActiveSync, the iPhone talks directly to Exchange. So the iPhone will get push e-mail, push calendaring, push contacts, global access lists, and remote wipe, all while talking to Exchange. And it’s built into the existing applications — mail goes into the same Mail program, calendar into the same Calendar, and so on.”

  • iPhone SDK

“Starting today we’re opening up the same APIs and tools that we use to develop our own applications today. Now, there are a lot of pieces that make up an SDK. But the most important are the APIs and the platform. And we have a great one, Mac OS X.” Layers: Core OS, Core Services, Media, and Cocoa. “To build the iPhone OS, we took the bottom three layers and moved them across. Now Cocoa is interesting… it’s the best application framework out there, but it’s based on a keyboard and mouse.” Instead, they build Cocoa Touch, based on touch interaction with the iPhone OS.”

According to Apple, its opening up all the APIs used by its own developers to develop the iPhone applications. They’re also building tools to support developers (on a Mac):

“Now a brand new development tool, the iPhone Simulator. Runs on a Mac, and simulates the entire API stack of the iPhone OS. So right here, on your Mac, you can run your application in the simulator, which gives you an incredible turnaround time on development.”

  • iTunes as an Application Market

Apple is using iTunes to allow distributing and selling applications. Developers have a standard platform to be used for distributing their application.
The application store is going to be the exclusive way to distribute applications to the iPhone. It is going to be free of charge for free applications and will involve a 30% fee of revenues of commercial applications.

Reminds me of Nintendo tactics – in its early days, Nintendo kept all manufacturing rights for Nintendo hardware. Being the manufacturer of Nintendo cassettes media it made all its developer buy its media to be able to distributing games…

  • Gaming platform

One of the aspects of the SDK is that it supports OpenGL for graphics and OpenAL for sound.
Apple had representative from EA testifying about the iPhone as a gaming platform and talking about games they’re working on.
Apple is selling the iPhone as a device with serious gaming capabilities. I bet we’ll also see more desktop oldies converted to iPhone now….
Combines with iTunes as a game distribution platform Apple can be on to something interesting here…  Kind of like what Microsoft is doing with Xbox Live! Arcade

  • Business Applications Platform

The iPhone graphics capabilities can also be used for analytics in business applications, as demonstrated by a SalesForce.com application:

“Salesforce automation application comes on screen. There’s a needle showing how a sales guy is doing, on a spectrum from red to green. A full iPhone toolbar on the bottom, and a native iPhone list at the top.”

Other demos shown:

  • Apple also had AOL talking about bringing AIM to the iPhone. I guess the other instant messaging platforms will follow…
  • Epocrates – Software used by doctors. I guess Apple is joining Microsoft, Google, SAP and Oracle in attacking the health market
  • iFund

Kleiner Perkins announced a $100 million iFund for investment in startups who create applications for the iPhone.
http://www.kpcb.com/initiatives/ifund/index.html

I wonder how corporate IT is going to treat these new features. Richard Koman at ZDnet seems skeptic

In any case, an iPhone SDK plus tight integration with Exchange can bring up some interesting ideas for Enterprise Applications like the ones we’re doing at SAP…
An iPhone Duet (iDuet) anyone?

Tags: , , , , , , ,

Sexy Enterprise Software?

SAP December 13th, 2007

Robert Scoble started a debate over the weekend when he wrote that enterprise software isn’t sexy.
I guess Scoble struck a nerve as his post caused a frenzy in the enterprise blogsphere, and on a Sunday…

Here are some of the comments:
Michael Krigsman, Nick Carr, Jason Wood, Dennis HewlettEd Hermann, George Ou, Ross Mayfield, Susan Scrupski,
Ian Joyce, Anshu Sharma, Craig Cmehil, Sadagopan, Vinnie MirchandaniStowe Boyd and Alan Patrick, and Thomas Otter. (see Techmeme for more)

I think the Damn proud to be “un-sexy” post by Vinnie Mirchandani exposes the root problem in SAP and in enterprise software in general:

..Yes, we will never have the glitz of  following a Facebook or Twitter or an iPhone, but the software and other technologies we cover cut checks, invoice customers, design products, manage supply chains, keep the wheels of commerce turning.

Aren’t you glad some of us find that sexy -)”

I have to side Thomas on this one. So what if enterprise software runs complex business processes and has to support standards, laws and regulations? Does it mean that the interface to these process has to be complex?

Why do I need a PhD in economics to be able to fill out an SAP expense request? Or a dedicated HR person that will file my vocation and attendance information into the ERP because its too complicated for the untrained to do so (and I’m a tech guy, imagine what its like in low-tech companies)? How can we let “enterprise” be an excuse for over complicating even these simplest processes?

Google is a great example for hiding complexity. I can’t even imagine the cloud computing hell, the algorithms and the army of computer science PhD that make Google work, and yet, all that complexity is hidden behind a simple text box where I just need to write my search term and get instant results. Simple, effective and usable by anyone without the need for special training.

Amazon too, have a simple, friendly interface tailored per customers needs. Behind this interface Amazon has to process and store a huge amount of data and manage complex business scenarios – supply chain management, invoicing, etc. – in a reliable and secure manner, etc.

Even look at personal banking applications like Mint and Leumi. They provide reliable banking expertise wether you’re a simple user, a day trader or a professional broker.

So what makes enterprise software different? If the above companies can make engaging and intuitive software while still enabling execution of complex business processes in a reliable and secure manner.
New business software disrupters, like SalesForce.com, are taking advantage of the simplicity and ease of customization features we see in consumer applications.
Enterprise software makers like SAP, still stuck somewhere in the 80s computing age, need a serious change of mindset in order to be able to continue competing. The current way of doing things doesn’t lead to anywhere…

So, maybe Vinnie is proud to be “un-sexy” but I’m damn tired of getting the evil eye (at best) whenever I tell someone I work for SAP…

Technorati Tags: ,,

Tags: , ,

Duet: An Enterprise S+S Offering From Microsoft And SAP

Duet, SAP, Software Architecture December 12th, 2007

The Strategic Architect Forum (SAF) conference was hosted at the Microsoft Conference Center in Redmond over three days during November 2007. All the keynotes and informational sessions are available for download at the SAF recorded sessions site.

Be sure to check out the Duet: An Enterprise S+S Offering From Microsoft And SAP session”:

Duet: An Enterprise S+S Offering From Microsoft And SAP
Chris Keyser (Microsoft)
Burra Gopal (Microsoft)
Adi Kavaler (SAP)

[Video] . [Slides] . [Transcript]

Other topics include:

  • Changing the World with Software and Services
  • Project Astoria: Data Services for the Web
  • Anatomy of An S+S Application
  • Unified Communications: Breaking VoIP Barriers
  • Composite Application Architectures Using the 2007 Office System
  • A Data-driven Approach To Distributed, Concurrent Software
  • A Look Into Microsoft Research
  • Claims-Based Identity Layer For The “New Internet”
  • The Reality Of The Cloud And The Future Of The Datacenter
  • Mining Lightning For The Cloud
  • User Experience for Architects
  • Windows Live Platform: Making Better End User Experiences
  • Dynamic IT
  • Amazon.com’s Simple Storage Service, Elastic Compute Cloud, and Simple Queue Service
  • Lessons Learned from the Web’s Edge: MySpace
  • Leading Geeks: How to Manage and Lead People Who Deliver Technology
  • Tags: , ,

    Duet Behind the Scenes: Bounded Items

    Duet, SAP July 18th, 2007

    Binding to Outlook item (Mail, Task, Contact, etc.) is one of the main features that differentiates Duet’s user experience from other OBA products such as Snap-Ins, Extensio etc. What exactly are bounded items? and how is binding implemented?

    What are Bounded Items?

    A bounded item is a simple Outlook item, which can be an email, appointment, contact etc. with an attached schema that defines it as a specific presentation object (presentation objects discussed in the previous post) and carries the business data related to that object. We call this a payload.

    The payload is an encrypted XML containing the presentation object reference and business data mentioned above and attached to the Outlook item as a custom property.

    For example, a payload attached to a contact item that represents a CRM customer would probably contain data such as the customer’s ID, company he works at, etc.

    Before we examine how this payload is built, maintained and displayed to the user we first have to take a step back and understand how its schema defined. Or to be more accurate, how we define a presentation object.

    Bound Item Definitions

    If you remember the metadata illustration from the first post, one of the key parts in a presentation object’s metadata definition is its Data Definitions as displayed in the illustration:

     image

    A presentation item’s Data Definitions contain the following information:

    1. Presentation object name- A unique resource name identifying this presentation object type
    2. Outlook definitions -Specifies the Outlook item type this objects relates to and its default folder location.
    3. Synchronization behavior – Type of synchronization used to synchronize to the backend.
    4. Business Data Schema – A schema for the business data this object carries with it
    5. Data Mapping to\from Outlook Properties – A set of mappings that define how the Outlook item’s default fields (Such as Subject, Location, Start\End Time) map to\from values in the item’s business data.

    If we look at a definition for a CRM Customer object again, its name would be something like "urn:sap:duet:crm:customer" and its business data would probably contain name and contact information (address, phone numbers). This data would be mapped to the relevant Outlook fields (phone numbers to Contact item phone properties, address to the Contact item address property etc.) so that when the user edits the object the changes will be propagated back to the business data payload (and eventually to the backend).

    This data definition, termed Bound Item Definition looks like this:

    <BoundItemDefinition Name="urn:sap:duet:crm:customer" xmlns="http://schemas.microsoft.com/OBA/2005/BoundItemDefinition">
      <Outlook DefaultFolder="CRM Contacts" MessageClass="IPM.Contact" />
      <Synchronization>
        <Behavior>Always</Behavior>
      </Synchronization>
      <Properties>
        <Property Name="Crm.Customer.FirstName" Type="String">
          <Behavior>OutlookToXml</Behavior>
          <Outlook Name="FirstName" />
          <Xml XPath="/ns0:CRMContact/Name" Namespaces="ns0='urn:sap:duet:crm:customer'" />
        </Property> <Property Name="Crm.Customer.LastName" Type="String">
          <Behavior>OutlookToXml</Behavior>
          <Outlook Name="LastName" />
          <Xml XPath="/ns0:CRMContact/ns0:LastName" Namespaces="ns0='urn:sap:duet:crm:customer'" />
        </Property>
        ...
      </Properties>
      <XmlTemplate>
        <s0:CRMContact xmlns:s0="urn:sap:duet:crm:customer">
          <s0:FirstName>String</s0:FirstName> <s0:LastName>String</s0:LastName> <s0:FileAsName>String</s0:FileAsName> <s0:Comapany>String</s0:Comapany> <s0:JobTitle>String</s0:JobTitle>  ...
        </s0:CRMContact>
      </XmlTemplate>
    </BoundItemDefinition>

    Binding an Item

    The process of binding an item is where we take a regular Outlook item and mark it has a presentation object. Basically we’re taking a regular Outlook item and marking it as a presentation object. The item’s behavior and schema for the business data attached to it are according to the presentation object’s data definitions. When binding an item the Duet platform adds 3 custom properties to the item:

    1. BoundItemId – A unique ID to represent this bounded item.
    2. BoundItemType – The type of presentation object that the item represents
    3. BoundData – The business data the item carries (payload).

    In our example, a bounded IPM.Contact object representing a customer would have urn:sap:duet:crm:customerIn as its BoundItemType and the following XML as its BoundData:

    <s0:CRMContact xmlns:s0="urn:sap:duet:crm:customer">
      <s0:FirstName>Eran</s0:FirstName>
      <s0:LastName>Kampf</s0:LastName>
      <s0:FileAsName>Kampf, Eran</s0:FileAsName>
      <s0:Comapany>SAP Labs Israel</s0:Comapany>
      ...
    </s0:CRMContact>

    The values in the BoundData are populated according to the data mapping rules specified in the bound item definition for our customer object.

    Security Considerations

    The BoundData can contain confidential information. Once retrieved from the backend systems we would like to limit access to it specifically to the user who got the information. Otherwise, sensitive information which is part of the user’s item can leek if, for example the user forwards the item to someone or if an IT administrator (or anyone else who has access to the user’s mailbox) looks at the item.

    We use DPAPI to encrypt the BoundData using the current user’s credentials so that only the Duet user who received the data can decrypt it. This way, even if someone else gets hold of the BoundData value he has no way to decipher it…

    This also means that when forwarding a Duet item the receiving side will not have Duet information available and will see the item as a regular unbounded Outlook item. I’ll discuss how forwarding of bounded items is performed in a future post dedicated to forwarding…

    kick it on DotNetKicks.com

    Tags: , , , , , , ,

    Duet Behind the Scenes: Metadata Driven Solutions

    Duet, SAP July 2nd, 2007

    The Duet applications are built using metadata definitions that are interpreted during runtime and drive the different application’s workflow and UI.
    How is Duet’s metadata defined and used? What are the advantages of this model? image

    Presentation Objects

    The Duet metadata defines business objects and how they interact with the user and the backend system. I like to refer to such objects as “presentations objects” because unlike the backend Business Objects that make sense to backend developers these are objects that make sense to the user.
    For example, information about a person’s salary, compensation and HR information may be represented as several different business objects on the backend (or on several backend systems, maybe even from different vendors). The end-user, looking at a contact information on his Outlook doesn’t have to know about all the different backend and business objects that were used to aggregate the information on his screen.

    Therefore, the Duet metadata defines such presentation objects - the information they carry, how this information is aggregated to and from the backend system(s)and how they interact with the user in his Office environment. So, from an abstract point of view, an application’s metadata structure is somewhat similar to this:

    image

    DuetML

    All the UI components in Duet are defined by a markup language – DuetML. Each UI component displayed to the user is actually represented by an XML defining the UI and a .NET assembly codebehind defining the logic behind the UI. Basically this mechanism is a lot like WPF’s XAML but with several key differences:

    1. DuetML is based on top of WinForms and has very limited UI capabilities specifically designed for Duet’s UI screens
    2. XAML gets compiled (to BAML) during design time while DuetML is interpreted during runtime.
      This gives us a lot of customization & translation capabilities on the server where we process the DuetMLs before sending them to the user (I will probably have to dedicate a whole post specifically to discuss business customization and localization)

    In fact, DuetML’s schema was designed to closely resembles XAML to allow transition to XAML in the future…

    So, Why Use Metadata?

    Simplified solution development. The metadata-based architecture makes it possible to develop declarative business solutions. Because solutions are defined in metadata, developers can build simple, powerful solutions with little or no coding using pre-made common solution building blocks. Advanced developers can use .NET further customize their applications and add new features.

    Centralized deployment. In order to run Duet solutions all the clients need is the Duet runtime which is a generic add-in that runs inside the Office applications and can load and interpret the metadata fetched from the server. The different solutions are deployed on a central server and do not require additional installations on the client.

    Enhanced customization capabilities. Declarative approach also allows enhanced customization capabilities as customizing the application simply means editing its metadata. Duet’s ACE (Application Configuration Environment) goes a step further by allowing providing a configuration environment that allows the business administrator to apply such changes without requiring knowledge about the metadata and code behind a solution.

    Automatic generation and modeling. A declarative approach for defining solution is the basis for enabling modeling and automatic generation of solutions. Imagine that you could quickly select some objects from the backend, define the matching object in Outlook and the data you wish to see and a solution will automatically be generated for you? And imagine you could customize such a solution using a visual programming tool such as Visual Composer (Microsoft Popfly, Yahoo Pipes style of development for you non SAPers)

    Tags: , , , , , , ,

    Exploring Google Trends

    Musing, SAP May 13th, 2006

    I was just exploring the new Google Trends and I found some interesting search pattern.

    “With Google Trends, you can compare the world’s interest in your favorite topics. Enter up to five topics and see how often they’ve been searched for on Google over time. Google Trends also displays how frequently your topics have appeared in Google News stories, and which geographic regions have searched for them most often.”

    First, I decided to compare different programming environments and see which one is the “trendiest” (Google Trends: Java, .NET and ABAP):

    This clearly shows that Java a lot “trendier” than .NET. It also shows no one uses ABAP :-)
    It also shows that India is way ahead the other countries which shows, in my opinion, the power of the software industry in India.

    On the same note, I decided to drill down into the specific technologies and\or languages in the .NET environments and see what results I’ll get there (Google Trends: .net, asp.net, C#, vb.net):

    Again, India is way ahead the other countries. We can also see that C# is more popular that VB.NET.

    And to conclude, I decided to check which one of the world’s top software factories has the most hype on the net (Google Trends: Microsoft, Oracle, Google, SAP, IBM):

    Google is by far the “trendiest” company on the net and I can’t say its a surprise. I wonder what makes SAP so strong in India compared to other countries…

    Tags: , , ,