Andrew Coates ::: MSFT

It's all about community!

May, 2008

  • Andrew Coates ::: MSFT

    Office Object Model References on MSDN

    • 2 Comments

    Sample Object Model Map

    On an internal alias, I recently got asked a question that had come from a customer:

    "I wouldn't have harassed you like this, except that I've done heaps of searching and can't locate what I need.
    My company has a new CIO, a consequence of which is the need to now embrace all things Microsoft.  We are currently doing some investigation on .NET stuff and Office 2007, but I'm having difficulty finding some concise documentation on Object Models.  I've trawled through MSDN and managed to find a few things out, but what I was really wondering was if there are any one or two page Object Model posters, similar to the ones you use to get in Notes?  I can't see anything useful on MSDN and was wondering if you had access to anything."

    I wasn't able to find any posters, but there is a great set of hyperlinked object model diagrams available. Here are a few:

    In general, I started at the Office Developer Centre and clicked on the Library tab. I navigated using the treeview to get to the 2007 Microsoft Office System node and then chose the various products, the Developer Reference and then the Object Model reference.

  • Andrew Coates ::: MSFT

    Unable to customise context menus in PowerPoint 2007?

    • 1 Comments

    I got this question from one of our partners yesterday.

    The application developed by my client is an add-in for PowerPoint. One of the features it provides involves adding custom items to the context menu of shapes and pictures using the Office object model. This add-in works perfectly well in 2003, but not at all in 2007.

    So far, what I’ve discovered is that the only context menu I can add items to is the Frames CommandBar. Some other CommandBar interfaces in the Application.CommandBars collection allow me to add without throwing an exception (e.g. Pictures Context Menu), but they don’t actually show when the application is running.

    I’ve read on a couple of forum posts that you simply can’t do this anymore. Is this true? Or is this a problem with either Office or the way we are attempting to customise the context menu?

    If you can’t add items to the context menu anymore, then what is the recommended method of displaying context information for such objects? I have played with the idea of displaying a tab in the Ribbon bar when an item is selected, but it just doesn’t jump out at users like the context menu...

    I couldn't see a way of doing what was required either, so I kicked the question up to one of our internal tech aliases. Unfortunately, the answer is not what you’re probably hoping for (bug rejected – feature deprecated):

    Unfortunately, the PPT 2007 OM does not allow adding context menu items for all objects (like shapes), the suggested way is to use Ribbon UI customization. Have a look at the following bug that contains a detailed explanation on this (and an internal link)

    The explanation in the bug record was in the form of a letter to the original (external) raiser of the bug:

    The Microsoft PowerPoint and User Experience Team have investigated the "PPT2007: Needs ability to Customize Right Click menus in PowerPoint” feature request and determined that this is not a feature that is feasible to implement outside of a full product cycle due to the extensive redesign and integration of core menu and object model functionality that would be required. For this reason, and because an explicit goal of the Office 2007 product’s design was to expand Ribbon functionality and deprecate classic menu functionality, we recommend that xxx design this portion of its solution around the new Ribbon feature, given that PowerPoint 2007 no longer provides legacy right-click menu customization.

    We understand that the intention is for you to customize the right-click menus with custom actions to navigate through the application and perform various tasks, however, right-click menu creation and functionality is not a feature in Power Point 2007. There is currently no upgrade path for previous Power Point solutions that have customized right click menu functionality. All previous Power Point solutions using this functionality will need to implement the Ribbon into their solution to drive user choices.

    In reviewing the proposal of adding in legacy right-click menu customization functionality, the Microsoft User Experience Team found several areas that pushed a potential solution beyond the scope of a Hotfix or CDCR.

    1. The sheer scope of designing and adding the right-click menu customization feature and full legacy functionality exceeds the risk capacity for post-release changes. Design changes of this scope typically require a full product cycle in order to ensure end-to-end quality.

    2. Office 2007 has a new object rendering engine, which could cause inconsistencies if the submenu feature were implemented. A new solution would have to handle all changes between the two code bases.

    3. PowerPoint 2007 does not provide the same high-fidelity representation of legacy Main Menu functionality that was available in PowerPoint 2003. The layout of the controls in the Ribbon's Add-ins Tab is sub-optimal with a highly complex add-in such as yours. To fully maximize the end-user experience, the add-In would need to be upgraded to fully utilize the Ribbon UI, as part of moving to Office 2007.

    Our recommendation is for you to combine the redesign of both the legacy Main Menu and right click menu issues together. This will provide the opportunity for your users to move to the Ribbon in both areas and utilize the new Ribbon functionality.

    In summary, Microsoft recommends that you model your UI on Office’s own built-in Ribbon UI, specifically around the use of Contextual Tabs as the mechanism for displaying contextually relevant content. For each object type that the add-in supports, a tab could be added to the appropriate contextual tab set that would contain the Add-In-specific tools for working with that object. With this type of design, the UI would better match the UI of Office 2007, and the end-users could potentially not require much extra training on top of the training for Office 2007 itself. For more information, please check out the Office Fluent UI Style Guide at the Office Fluent Ribbon Developer Portal.

    I guess that it makes sense in the long term to continue to leverage the great work the Office UI team have done with the Ribbon and the Fluent UI generally, but I do feel for the team who are looking to implement equivalent functionality in the new version of their Add-In as already runs in the current version.

    Backwards compatibility is a perennial problem.

  • Andrew Coates ::: MSFT

    The Portal is Dead! Long Live the Portal!

    • 2 Comments

    I had a great time presenting at the Perth SharePoint User Group last Tuesday. I've uploaded my deck to my SkyDrive if you're interested.

    The session talked about surfacing relevant information in the context in which it's needed. The example I gave is of a sales person who gets an email from a customer requesting an increase in the number of widgets in their current order from 1000 to 1500 units. Traditionally, this has meant that as the sales person I would have to do the following things

    1. Look up the customer in the CRM system to find the contact history for the company and a link into the accounting system
    2. Look up the company in the accounting system to check that they've got sufficient credit
    3. Look up the widget code in another module in the accounting system to check that we've got sufficient stock to fill the order
    4. If we don't have sufficient stock on hand, look up the widget code in the ERP system to see when we expect to have the stock available
    5. If that's not soon enough, look at another module in the ERP system, as well as in the CRM system and the accounting system to find which of our other customers' orders we can defer to fill this change.
    6. If I work out that it's possible and sensible to increase the order, change the order in the accounting system (and any other orders that may have been affected) and the details in the ERP system to reflect the change(s)
    7. Finally, go back to my email system and respond to the customer with my decision. Update the details of the contact with the customer in the CRM system.

    That sequence of events takes some time to achieve and, perhaps more importantly, requires a switch of context every time I switch systems (count 'em, there are 11 context switches in the 7 steps above!)

    The promise of Office Business Applications (OBAs) is that this context switching will be significantly reduced or, potentially, eliminated completely. If, instead of the sequence above, I had the relevant information available as a part of the email then I could make and communicate my decision in the context of that email.

    At the session there was a bloke sitting up the back who asked some very pertinent questions about what this session meant for the portal, and in particular for all that stuff we'd been saying about using SharePoint as the place people go to discover stuff, anything, they need to know about the organisation. Yesterday I got an email from that bloke, who turned out to be Jeremy Thake, pointing me to a great post he'd done after thinking more about the session and the questions he'd raised.

    Jeremy's first concern seems to be that I positioned the Office Client tools as the place to get all the information you need, but for the past n years he's been hearing the message from Microsoft that SharepPoint is the the presentation layer for all of your back-end systems.

    "Why not go to SharePoint for these things? Isn't that what the Business Intelligence Pillar of the SharePoint stack is for (Dashboards and Reporting Services, Excel Services Integration)?"

    On the surface, he seems to have a point, but one of the key themes I was emphasising throughout the presentation was the ability of OBAs to surface contextual information that's applicable to the task or question at hand. I don't think this precludes the portal as an appropriate place to surface key business information, in fact there are a number of scenarios where it's eminently suitable. Of course, the portal's not just the presentation layer. It's also a set of services that can be consumed by the contextualised applications. It provides a repository for the information created by the use of client applications. It centralises the dissemination of information.

    Jeremy's next concern is based on the premise that if we give users a richer experience than what they can get through a web page, they'll want to use it:

    "My main concern is that by pushing the Information into Office applications, it will obviously look a lot more feature rich and perceivably be faster than any web page in SharePoint. I understand that Office development has been around a lot longer than I've been writing code, but this seems like a pretty aggressive marketing push based on the information out there"

    Well, yes, I guess that's true. We've always talked about the spectrum of reach to rich (by the way, I love the fact that Jeremy's linked to Erika's blog - I've been addicted to it for a while now). My concern is that if we only focus on the reach and exclude the rich then our users won't thank us. To be fair to Jeremy, that's not exactly what he's asked for. He wants us to spend more time making the portal richer. That's a laudable goal (and one towards which we're constantly striving), but the fact remains that the rich client experience will always beat the web experience. With the constant improvement in the client platform, with integration with the video game quality graphics engine, the search, the RSS feed store, the networking awareness, the improvements to the Office UI and more, we'd be doing our users a grave disservice not to take advantage of it.

    Next, Jeremy raises the question of Office Development (although I think he mainly means deployment). He comments on the model of apps being available offline and somehow makes this sound like a bad thing. I do understand that some people want complete control over the environment at all times, but that doesn't help our users be productive wherever they are. Jeremy also says is that the ClickOnce deployment model relies on users being online. That's not completely true. It relies on users being occasionally online. This model is generally more than adequate. If there's a component of your app that relies on the cloud for critical functionality, then disable it while the user's not connected, but let them get on with the rest of their work without being tied to the cloud (that's a beautiful image isn't it?)

    Jeremy then asks "Where does SharePoint fit?". I don't think anything's changed. SharePoint is a great aggregator, portal and source of services. You surface the information it provides in the client that's applicable to the task at hand. If the task is responding to an email, then surfacing that information in that email is probably the most appropriate and efficient technique. In other situations, surfacing it in a Sidebar Gadget or on a web page or as an SMS message might be more appropriate. You use the right tool for the job.

    Speaking of tools, Jeremy also had a concern about this diagram.

    Tools for Any Skill Level

    He seems to have inferred that because the word SharePoint is not listed in the "Professional Developers" sector of the diagram, that SharePoint doesn't feature in the professional Office developers' toolkit. That's not the case. Visual Studio is a great tool for deep SharePoint development work. For example, there are two new project types in VS2008 that deal specifically with SharePoint workflow.

    VS2008 New Project Dialog with SharePoint Workflow Project Templates

    So, I apologise if I gave the impression that "Office Development is far more superior to SharePoint Development", that was not my intention at all. My intention was to highlight some of the ways you can use the Office Client tools to make use of the great information aggregated and presented by SharePoint and your other LOB applications.

    Finally, Jeremy quotes Steve Balmer "[Sharepoint] is the missing link between personal productivity and Line of Business Applications" and asks where that leaves Office. My take on this is that it makes Office (client) the personal productivity bit and Office (server - including SharePoint) the missing link.

  • Andrew Coates ::: MSFT

    Content when you need it - Great training kits available

    • 2 Comments

    I went to see the clever folk at Vivid Group yesterday. Being clever, they've already established an internal user group of sorts, but they're often looking for compelling content to deliver. Fortunately, I was able to point them to some great resources.

    VS2008 and .NET Framework 3.5 Training Kit

    The various Visual Studio Training Kits provide content in the form of presentations, demo code and scripts and labs. There are three flavours available at this stage:

    By the way, that link to the VPC is for one that expires on December 31 2008. http://msdn2.microsoft.com/en-us/vsts2008/products/cc268311.aspx will always link to the most recent version of our VPC’s for download.

  • Andrew Coates ::: MSFT

    Content from the SharePoint Forum now Available

    • 1 Comments

    Alistair and I did a session at the recent SharePoint Forum on "Delivering Systems that the Users Don't Hate: Why Office and SharePoint will change the way you work" (which I'll be redelivering in a slightly technified form tomorrow at the Perth SharePoint User Group). All of the decks and the videos from the keynote and the sessions that were recorded have now been posted.

    You can access

    You can also access the keynote via live meeting with following information,

    You can now View online, the Keynote in two formats:

    • High-Fidelity Presentation (HFP) ~100 MB
    • Windows Media Player ~18 MB

    From https://www.livemeeting.com/cc/lmevents/view?id=msft050508jc&pw=AJG732&

    By the way, Alistair's also been blogging about the TechEd Office Track - check it out.

  • Andrew Coates ::: MSFT

    WOW! It's the Technology of TechEd Track

    • 2 Comments

    Following Kleefy's not so unexpected announcement, I've taken over the Technology of TechEd Track for this year's TechEd Australia event. Here's the spiel that I wrote for the track.

    Come on a journey behind the scenes at Tech•Ed. This track will take you end-to-end in the technology deployed to make the event the showcase it is. From hardware planning through network analysis and contingencies to application development and deployment including stops in Security and Management, mobility and virtualisation. Hear how it was done from the practitioners who made it happen.

    Here's our current thinking for the track sessions - let me know what you think:

    Track KickOff

    What is this track anyway? Why should I come? Who are the speakers and what can they tell me? How do I start a conversation with the people who can help me with my pain points? All these and more will be answered at the ToT Track Kick-Off.

    Building the hardware for CommNet - a lesson in hardware performance

    Part of a good enterprise deployment is the selection and configuration of the hardware. In this session we show you how we set up the hardware for TechEd and configured it for performance.

    Deploying Clients and Servers en masse

    The next step is to get our base platforms installed. This session shows how this gets done in an automated way that complies with a standard server build methodology. We will use tools like Windows Deployment Services and Windows Automated Installation Kit (WAIK) to provide the best way to deploy both servers and clients.

    Building SQL Servers for high performance

    In the last session we covered the base platform deployment for client and server. In this session we cover SQL server installation and configuration and provide the best options and choices for performance and high availablility.

    Managing applications and services using SCOM and SCCM

    As we roll out base platforms and applications, we need to make sure we can manage them easily and efficiently. Doing this bit right means a better service to the business and an ability to cover more services with less resources. This session demonstrates deployment and configuration of SC Operations Management and SC Configuration Manager and shows how you can get lots done!!

    Securing CommNet using Forefront and ISA

    Once we start to expose services to the Internet, stuff gets more complex. We end up asking questions like: Have we covered security services hardening? How can we expose this stuff to the Internet in a secure way. This session shows how we configured our live environment and exposed it to the Internet using ISA Server and implemented Forefront Client Security.

    Quick and Easy Application Delivery for Windows Vista and Terminal Servers

    We have the base platform, security and management services applied...now its time for the applications. In CommNet we have Terminal Servers and Windows Vista clients. This session demonstrates how to build applications that deploy out using streaming application virtualisation technologies that take the headache out of applications delivery - for both platforms at once!

    Terminal Services configuration, thin client delivery and scalability learnings

    The last piece in the service delivery of CommNet is the Terminal Server deployment. With the majority of CommNet being delivered in this way means that these servers need to scale. This session shows how we built them for scale, deployed the applications to them, continue to monitor them and you can access them from anywhere!

    Oh wait! TechEd just merged with another event....a demonstration in identity management through acquisition

    Application Virtualisation – the best of both worlds

    The CommNet thin client experience is a combination of light-weight client hardware and sophisticated server technology. Join the experts from HP who delivered the outstanding end-user experience that Windows Server 2008 facilitates.

    Implementing RFID with BizTalk server

    You will by now have noticed the use of RFID for session management. Deploying a large scale solution for an event like TechEd is not without its challenges though and as such required careful planning and consideration. This session will show you what it took to get this running, how easy it was to get BizTalk working with RFID and the practical applications you can use it for.

    Delivering Reporting Solutions for Predictive Analysis with SQL 2008

    Putting the Software in S+S

    TechEd in the Palm of your Hand - Mobile Commnet

    Monitoring Infrastructure in an Ad-Hoc, Heterogeneous World

  • Andrew Coates ::: MSFT

    Community is where you make it

    • 2 Comments

    As my blog tag says, it's all about community. Just before I went dark to go on the Wave Launch tour, I got a note from Daniel Vaughan to say he was doing a presentation to a User Group inside the firewall at his work (btw, Daniel's blogged about the presentation - Model Driven Development: An introduction to Windows Workflow Foundation and posted the deck he used). I love this concept of user groups in an organisation with a bunch of developers, and it's something I've been trying to facilitate in a number of companies. If you're interested in starting up a group in your company, please drop me a note and we can talk.

    Benefits

    There are some real advantages to companies who instigate and support a user group/community of practice/centre of excellence, call it what you will.

    Staff Development

    User Group meetings become a regular training session for all developers in the organisation – introduction to and discussion of current and emergent technologies and techniques

    Emergence of Experts

    Presenters on a particular topic become in-house experts, which encourages their development of that expertise. A virtuous cycle.

    Cross-pollination

    Discussion of what’s going on in one group often leads to transfer of skill or knowledge to another group that is doing similar things.

    Candid discussion inside the firewall

    Because all of the attendees are internal, current projects and candid disclosure are fair game

    Morale

    Developers have an opportunity to learn and to demonstrate their skills/knowledge – two significant drivers of developer morale. In fact, when I'm talking to a CxO about this idea, I go so far as to say that for developers especially, three of their major virtues are sloth*, pride** and a thirst for knowledge. This forum allows the expression of the last two of these.

    Requirements

    Of course, a group like this doesn't just happen, there are a few things that you need to have in place to make it a lasting success

    Exec Sponsor is Key

    The first requirement is sponsorship at a senior executive level, preferably CIO/CTO. There must be an acceptance of the concept and a willingness to mandate that developers get are allowed to make the group a priority. It's all too easy to say "we're too busy, we'll can the meeting for this month", but for the group to survive, let alone prosper, it needs to happen on a regular, predictable basis. The sponsor must buy into vision of COE and be prepared to fight at highest level to keep budget and time allocations available. There may be a need to incorporate COE meetings into utilisation targets. There needs to be a decree from on high that developers are to be released to attend. There should be a succession plan in case the Executive Sponsor moves on. You might also engage with Training Coordinator

    User Group Leader

    This is the same kind of person you have running Community User Groups outside the firewall. They are an enthusiastic advocate of development tools, technologies and processes. Often, this person isn't a manager but an experienced Individual Contributor. It's a great position for someone who wants to be noticed doing an important job by people at a high level, but that should never be the only reason to give that person the job. Of course, the work this person does needs to be recognised in their goals for this role. You also need a succession plan in case the Group Leader moves on, and in some cases an assistant or co-leader is a good idea.

    Location and Timing

    This needs to be immovable and recurring. This means that it goes into people’s diaries as a “do not miss” event and they get there almost on remote control. COE must be a habit.

    Content

    A key driver of satisfaction with COE is quality content well delivered. Having 6 months content at the start means that the Group Leader can work with the content delivery people to make sure their content is spot-on. 3 months lead time is generally sufficient once the habit is established. This is the main task of the GL.

    We (MS) can help by providing content to the GL for redelivery within the org (e.g. TechEd DVDs with pptx decks and recordings of the sessions for the presenters to learn from). A meeting might look something like this:

    Time Topic Presenter
    2:00-2:15 Welcome, Q&A Group Leader
    2:15-3:15 Technical Presentation
    (e.g. "Using Windows Communication Foundation to Interface with SAP")
    Developer/Architect from within organisation
    3:15-3:30 Break All
    3:30-4:00 Project Presentation
    (e.g. "Project Blackcombe: Challenges, Solutions and Status")
    Project Blackcombe lead developer
    4:00-5:00 Drinks/Networking All

    Optional Extras

    I love the idea of giving people in your organisation incentives for contributing to the group. I'd recommend catering the meeting (lunch or end of day generally works well, although I've known breakfast to be a winner too in some organisations). It's also worth considering providing speakers with a small gift. A shirt works well (company logo, a user group logo etc) as does some kind of geek gadget.

    Cost

    Setting up and running a group like this is not expensive, in fact for about $6.50 a meeting plus a time contribution you get a lot of return. Here's how I arrived at that number:

    Item Cost
    Speaker Shirts - 25@ $20 ea (2/meeting + 3 spare)> $500.00
    Catering - $5/attendee (11 meetings, 30 attendees) $1,650.00
    Total $2,150.00

    That's $6.50/mo/attendee. In addition, you should allow 3 hr/mo/attendee, 10 hr/mo speaker prep, 8 hr/mo group leader prep.

    How can we help?

    We've got some resources available to help make your group a success. Firstly, I (or someone like me) am available to present this to a potential executive sponsor. Next, there's a MOSS template that was developed by some of the US evangelism team to help you run the group. We've got a bunch of content available (for example the TechEd DVDs for the past few years) with PowerPoint decks and videos of the sessions being delivered and finally, we can organise the occasional guest speaker from Microsoft to present at your group.

    If this is something you'd like to make work in your organisation, then drop me a note.


    * Sloth - the kind of laziness that would rather spend 4 hours writing a generic text import module than 1 hour re-keying data.

    ** Pride - but only showing off to other geeks professionals who actually understand what they're talking about.

  • Andrew Coates ::: MSFT

    Developing an add-in for multiple versions of Office

    • 1 Comments

    One of the common questions I get asked when I do sessions on VSTO/OBA development is "how can I target Office 2003 and Office 2007?" (I also get asked about previous versions of Office, but I have a less helpful response there). Mary Lee's done a great post about this very topic as has Andrew Whitechapel (Can you build one add-in for multiple versions of Office?). There's also an MSDN page (Creating Solutions for Multiple Versions of Microsoft Office).

    Of course, there are a few questions you need to ask yourself when you're considering going down this path. Especially with Word, Excel, Outlook and PowerPoint, the UI is radically different. If you're really taking advantage of the platform, you need to consider whether it's feasible to package the common logic in a library and deploy just a UI wrapper that is suited to the target app.

  • Andrew Coates ::: MSFT

    Machinations

    • 4 Comments

    dgii Just trying out a new look. After my plan comes to fruition, I should be ready to subsume the brand.

  • Andrew Coates ::: MSFT

    Deploying VSTO 3 solutions

    • 1 Comments

    While the default mechanism for deploying VSTO v3 Add-Ins is ClickOnce, there there's now also a documented way to deliver VSTO solutions via an MSI installer. By extension, this should mean you can push it out via group policy (or SMS or whatever).

    Mary Lee's done a good post on this: http://blogs.msdn.com/vsto/archive/2008/04/10/deploying-an-office-solution-using-windows-installer-mary-lee.aspx.

    The code and steps outlining creating a setup project are available here: http://code.msdn.microsoft.com/VSTO3MSI.

    Misha Schneerson has done a 3-part blog post on deploying your VSTO Add-in to all users (using HKLM instead of HKCU):

    http://blogs.msdn.com/mshneer/archive/2007/09/04/deploying-your-vsto-add-in-to-all-users-part-i.aspx

    http://blogs.msdn.com/mshneer/archive/2007/09/05/deploying-your-vsto-add-in-to-all-users-part-ii.aspx

    http://blogs.msdn.com/mshneer/archive/2008/04/24/deploying-your-vsto-add-in-to-all-users-part-iii.aspx

Page 1 of 3 (25 items) 123