Duet Case Study - Auckland Regional Council

Posted in  |  | .  

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...)

 


Looking For New Adventures

Posted in  |  | .  

I joined SAP more than 3 years ago (on the same day as my 23rd birthday) for a new internal startup
(an Emerging Solution as SAP dubs it) - Duet.

Working on Duet, a joint effort of SAP and Microsoft, has been an amazing experience.
During my work at SAP I've had the chance to appreciate the software industry from in non technical aspects (business, strategy, project management), to work in a truly global organizations that requires daily contact with colleagues around the globe and to travel quite a bit...
Undoubtedly, I owe SAP the credit for helping me "grow up" professionally and expanding my knowledge and interests beyond core development skills.

However, for a while now I've had this growing anxiety for doing something else.
Through blogging, friends and various web 2.0 sites\gatherings, I've had the chance to meet a lot of interesting new people that opened the door on many new (risky?) opportunities...

Trading my secure, salaried job for an unknown is a scary thing to do, and yet, it's something I must do in order to be able to fully and wholeheartedly explore the different alternatives out there. And so, I have officially resigned from my position at SAP. It would be unfair to my colleagues, SAP and myself to do anything less.

What's next? I'm not entirely sure...
I'm looking into internal opportunities within SAP as well as external opportunities, I've got several startup ideas that I'm exploring with partners and of course there's that Computer Science degree I should finish already (and make the folks happy).

In any case, I'm sure there's an exciting future ahead and I invite you all to read along and find out with me...


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

Posted in  |  | .  

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

  • Moving to Seattle (Redmond)

    Posted in  |  |  | .  

    I'm moving to Seattle for a couple of months to work with the team at Redmond on Duet related topics.
    I've already taken care of most of the arrangements (still need to pack) and I'm anxiously anticipating my flight on Sunday morning.

    Looking forward to a very interesting visit...

    Anyone has some good tips on things to do in the Seattle area?


    Duet To The Rescue...

    Posted in  | .  

    When BNSF decided to replace its aging legacy systems, two software companies naturally came to mind. At the end of the decision process, only SAP remained.

    Fort Worth, Texas-based Burlington Northern Santa Fe Railroad had already pushed its decades-old legacy systems to the limit, and with the railroad industry expecting rapid growth, the company decided it was time to upgrade, according to Jeff Campbell, BNSF's vice president of technology services and chief information officer.

    The only question was: SAP or Oracle?

    The final nail in Oracle's coffin may well have been Duet. While SAP and Oracle both had advantages in other areas, BNSF felt Oracle couldn't match Duet's functionality.

    "Our casual users are very good at, and very familiar with, the Office environment," Campbell said. "To be able to utilize that platform -- as time goes on and more functionality is available in Duet -- makes it much easier for the end-user experience."

    Check out the full article...


    Duet Behind the Scenes: Bounded Items

    Posted in  |  |  | .  

    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

    Duet Microsoft Partner Program Page

    Posted in  | .  

    Saw the news on Ian's blog. Microsoft launched their Duet partners page. Check it out...


    Duet Behind the Scenes: Metadata Driven Solutions

    Posted in  |  | .  

    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)

     


    Just Duet! - Introduction and a Mission Statement

    Posted in  |  | .  
    image

    There are only a few active Duet bloggers out there but it seems that I'm the only one blogging from the dev team.
    Sadly, so far I haven't taken advantage of that to write some cool posts about the technology behind Duet.

    I've decided to change that with a series of posts about the technology behind Due (and the first post will follow shortly after this one)

    But first, a brief introduction:

    Who am I?

    My name is Eran Kampf and I'm a senior .NET developer and part of the Duet Platform group located at SAP Labs Israel.

    What is Duet?

    Duet is a product, jointly developed by SAP & Microsoft, that aims for a seamless access to SAP through Microsoft's Office platform.

    What's it like working on Duet?

    I guess this T-Shirt pretty much sums things up:

     תמונה051

     

    Technorati Tags: , , ,

    Duet Presentation at SAPPHIRE 2007

    Posted in  |  |  | .  

    The video and audio recordings and the slides from the event are now availble at http://www.sap.com/community/int/webcast/2007_04_Sapphire_US/index.epx?sessionid=166

    Here's the presentation's abstract:

    Duet Software: Supercharge Productivity with the Workplace of the Future

    Information workers constantly toggle between enterprise applications, personal productivity software, and devices to answer their immediate question or complete their current task. The result affects productivity, decision making, costs, and compliance. The wait for a new workplace is now over. Learn about the existing and planned functionalities of Duet software to connect Microsoft’s people-ready world to SAP's enterprise-ready world.


    Unofficial Blog on Duet, Microsoft and SAP

    Posted in  |  |  | .  

    Ian Tien, a senior product manager at Microsoft, opened a new blog about Duet titled "Unofficial Blog on Duet, Microsoft and SAP".
    Check it out at http://msftduet.spaces.live.com/default.aspx


    We're Hiring! - Duet Enablement Group Architect

    Posted in  |  | .  

    We're hiring a new architect for the Duet Enablement Group.
    Duet is a groundbraking collaboration between SAP and Microsoft designed to revolutionize how Information Workers interact with enterprise applications.
    We've released the first version last year and won the ComputerWorld Horizon award and it's going to be even more exciting this year with the recent announcement of SAP and Microsoft extending their Duet partnership.

    I've pasted the job description and requirements below. Feel free to contact me if you're interested...

    General Description

    • Take part in the definition of Duet platform architecture
    • Report to the OSP Duet Enablement development manager
    • Be part of the platform architects forum lead by the platform architect

    Job Description

    • Lead architecture related activities within the OSP Duet Enablement group.
    • Be responsible for the technical quality and completeness of the design of the sub systems under the group responsibility
    • Identify new infrastructure components which are part of the group's domain and promote their implementation
    • Be involved in defining and applying development standards
    • Work with other SAP parties (internal customers and suppliers).
    • Participate in the strategic discussions on the future directions of the product

    Job Requirements

    • More then 6 years of development experience, of which at least 3 years proven experience in software design / architecture definition in large scale development projects
    • Deep & Wide Knowledge of Microsoft Technologies
    • Experience in the complete development lifecycle
    • Experience in working in a global environment
    • An academic degree in Computer Science
    • Experience in User Interface development - Advantage
    • Knowledge in J2EE technologies - Advantage
    • Excellent interpersonal + communication skills (Hebrew and English)

    Duet at Sapphire

    Posted in  |  | .  

    Today at Sapphire SAP & Microsoft announced the extended roadmap for Duet 2.0 and Duet 3.0.

    The key messages of this roadmap are:

    1. Microsoft and SAP will extend their Duet partnership with two more major versions aligned with the next generation of Microsoft's Office and SAP's Business Suite.
    2. Planned Duet features for Duet 2.0 and 3.0:
      1. More advanced Duet scenarios to enable all information workers in the enterprise
      2. Enhanced Duet tools and platforms package to enable customers to develop their own scenarios for Duet.

    For more information check out the press release at http://www.sap.com/company/press/press.epx?pressid=7607.

     

    image In addition, together with HP, SAP and Microsoft also announced Duet Appliance - a pre-installed and configured Duet solution based on HP servers. You can see http://www.sap.com/company/press/press.epx?pressid=7577 for more information.

     

     

     

     

     


    Technorati Tags: , , , , ,

    Track your Duet Leave Request\Report

    Posted in  |  | .  

    Stefan Schwing posted 2 new blog posts that describe how to track the process of a leave request and report creation throughout the Duet landscape.

    Check these posts out:


    Duet Community Area on SDN

    Posted in  | .  

    Fresh off the press - we recently launched the new Duet community page on SDN at http://www.sdn.sap.com/irj/sdn/duet (or expand the "Emerging and UI Technologies" navigation tree to see the new Duet link).

    Alan talks about this new page in details...

     


    Technorati Tags: , , , , ,

    Duet References Online

    Posted in  |  | .  

    Microsoft's Duet online reference site went online at the following address: http://office.microsoft.com/en-us/duet/FX101686211033.aspx

    Also, SearchSAP started an online Duet resource center at http://searchsap.techtarget.com/DuetResourceCenter/


    Checklist of activities for the Duet client installation

    Posted in  |  | .  

    Stefan Schwing, an SAP RIG specialist, has written a very comprehensive post on the Duet client-side components installation.
    Check it out at https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/5390.

     

    Technorati : , ,


    Back from India, Off to Palo Alto

    Posted in  |  |  | .  

    After a hectic, being stuck at Mumbai for a day, I came back to Israel a day later than I planned on Saturday.
    Flying El-Al proved, again, to be a "fun" experience.

    Anyway, I'm flying to Palo Alto in a few hours (On Lufthanza this time) for the SAP Developers Challenge and a short Duet workshop after which I plan to have a short vocation at New York (being at Times Squere on new years eve should be fun).

    What is the SAP Developers Challenge?
    Basically, SAP takes a bunch of developers from different groups all over the world and team them up with a mission to create something cool
    which they later have to present to Shai Agassi and a panel of judges.
    Its the second time ever SAP holds such an event and my first time as a participant so I dont really know what to expect but it sure does sounds exciting...

    So, on to another month away from home...

    Technorati : , ,


    Microsoft and SAP Tout Growing Market Momentum

    Posted in  |  | .  

    200 team members

    200,000 users in 3 months

    more than 20$

    Duet

    Check out the new press release from Microsoft TechEd Barcelona at http://www.sap.com/company/press/press.epx?pressid=7003

    Technorati : , , , , ,


    Traveling to Bangalore

    Posted in  |  |  | .  

    I'm currently at the Bombay domestic airport after a (very) long flight from Tel-Aviv.
    I'll be working with the Duet team at Bangalore for the next 10 days and it should be an interesting
    expiriencebecause I've been workin with these guys for almost 2 years without meeting them in person.
    It's also my first time in India which also makes this a special expirience.

    After Bangalore I have about a week in Israel before I go for a month to the US but thats a topic for another post...

     


    Duet FAQ: Why the two separate components, Duet server and Add-On are required?

    Posted in  |  | .  

    I recently received this question from a reader:

    Hi Eran,

    for Duet the following main components are needed: Duet server and Add-On server. In the following I listed a couple of questions related to the Duet system landscape:

    1.) Can you please explain, why the two separate components Duet server AND Add-On are needed?
    a) Is it because the user mapping between ADS world and SAP world?
    b) Is it also important in a multi-domain landscape? (eg. Clients, Exchange server, Duet server in one domain and ERP system in another domain)
    c) When does the user need different physical machines?
    d) When does the user need different J2EE instances?
    e) When is it possible to use one single J2EE engine to install both components?
    d) I assume it is also because of scalability, right?

    Would be great to have more info about this topic!

    THANKS & Cheers
    Stefan

    Well Stefan, the answer to your question is as follows:

    The various components in Duet's architecture are gathered to logical groups (Duet Server, SAP Add On) that are in charge of different product flows. While the Duet Server is mainly in charge of the deployment flow and the user initial authentication and URL resolution, the SAP Add On is in charge of the processing the ongoing web service calls.

    There are various ways to install those logical components on physical machines. In the minimal installation the Duet server and the SAP Add On can be installed on the same machine and leverage one J2EE engine.

    You're also right about the scalability reason. Basically, a typical Duet landscape only requires a single Duet Server but can contain several Add Ons to optimize performance (for example, an Add On per backend system or geographical location.)

    Technorati : , , , , ,


    Duet 1.0 General Availabilty has Shipped Today!

    Posted in  |  | .  

    Next on the line are the planned value packs...

    Technorati : , , , , ,


    New Duet 1.0 and Value Pack flash demos

    Posted in  | .  

    Here is a set of flash demos covering Duet 1.0 functionality as well as what is planned for Duet's first value pack.

    Technorati : , , , , ,


    Quiz: Duet 101

    Posted in  | .