Microsoft Enterprise Social roadmap #Yammer #SharePoint

Following my recent career move (see Hello Social, goodbye Project! #msproject #yammer ) focused on Enterprise Social and the recent SharePoint Conference 2012 last month, I’d like to share important announcements we made at that event that provides insights into our strategy around enterprise social. Putting Social to Work (Business Value, Vision, SharePoint + Yammer Roadmap, Yammer Packaging and Pricing ), Jared Spataro : http://blogs.technet.com/b/microsoft_blog/archive/2012/11/12/putting-social-to-work.aspx SharePoint Conference 2012 Opening Keynote : http://www.youtube.com/watch?v=BLsIjvIyAxo It’s an awesome two hour keynote you should be watching end to end but specifically watch these segments on Enterprise Social (I’ve put the approximate start times): Why we acquired Yammer? Jeff Teper- 0:36 Enterprise Social Network – David Sacks – 0:42 Transform your business, Experiences & Platform – Adam Pisoni – 0:46 3 social demos:  Yammer & SharePoint/ Open Graph , Yammer & SkyDrive Pro integration,Yammer Windows 8 app– Adam Pisoni – 0:51 Roadmap – Jeff Teper – 0:56 Nationwide Insurance – Yammer & SharePoint video – 1:00 A great blog to subscribe to: http://blog.yammer.com/blog/ Exciting years ahead and get started with Yammer today! Happy holidays!

Back to Basics: Setting Up Office 365 – Lync and Learn

Audience: Office 365 for professionals and small businesses Office 365 for enterprises     To join this Lync and Learn Session  please Download and save the calendar invite at the bottom of the blog post. Join us on  Thursday December 20 th , at 10:00 AM Pacific Time  and  view the Lync online meeting information below.  We are excited to see you there!  Lync and Learn is an online session led by Office 365 Product Managers and Community  Grid members .  Lync and Learn sessions address different Office 365 subjects and scenarios and is beneficial to anyone who wants to learn more and expand their knowledge of the Office 365 suite. View past Lync and Learn sessions  here .        Office 365 provides convenience in the cloud through a great set of productivity and collaboration tools. In this Lync and Learn session, Kelsey Epps will provide some convenience of his own through helping us set up Office 365. We’ll get back to the basics and dive into setting up Office 365. In this Lync and Learn Webcast we will cover the following:  Sign-up for the trial Adding a domain and verifying it DNS records Create Users and Assign licenses Setup Desktop PC for User Accessing Office 365 Services from the Desktop and Internet Purchasing Additional Licenses Open a service request Kelsey Epps is a Senior Systems Engineer with a background in Microsoft Clustering, Exchange Server, Lync Server and Windows Server. Download the calendar invite below and join us on December 20th at 10:00 AM Pacific Time for this great session.   Interested in being our next Lync and Learn presenter?  Learn how to join the Office 365 Grid  and become an Office 365 Lync and Learn presenter. ——————————————————————————————————————————————————— Presenter: Kelsey Epps , Technology Consultant with HP and Concepps Group, and  Office 365 Grid member . Date/Time: Thursday December 20 th , at 10:00 AM Pacific Time . (1 Hour presentation) ·         Live Meeting Information: Join online meeting https://join.microsoft.com/meet/v-joshto/F00T8BQY Join by Phone  +18883203585          Find a local number   Conference ID: 27579341    Forgot your dial-in PIN?  |    First online meeting?      [

Understanding the Access Denied Error Message when Mapping a Network Drive to SharePoint Online

  by Brian Petersen, MSFT SharePoint Online provides users the ability to map a network drive to a document library allowing a user to navigate to and open files directly from Windows Explorer. This blog is intended to direct users to a Knowledge Base article that’s been published to help not only setup and configure mapped network drives, but also address common issues and steps to resolve.  In the More Information section of this blog you’ll see a link to the KB Article, but you’ll also see more details around the most common scenario we see in support.  Note This blog and the KB article do not apply to Microsoft Office 365 for professionals and small businesses.   More information: The Knowledge Base article entitled “How to configure and to troubleshoot mapped network drives that connect to SharePoint Online sites in Office 365 for enterprises” can be found here: KB2616712 . Ensure all the steps are completed in the KB, but also note the comment about the cookie expiring in the first set of solution steps. The comment in the KB states “Be aware that the cookie will eventually time out”. Certainly, having the WebClient started in your client machine’s Services, along with adding your SharePoint site to the Trusted Sites Zone of your Internet Explorer browser, are both important solutions to Mapped Drive issues. However, you will continue to encounter an Access Denied error periodically – mainly after rebooting the computer or when you haven’t logged in (authenticated) to SharePoint Online over an extended period of time, generally 8 hours., One common scenario is when a user locks the computer at the end of the workday, returns the next day, and logs in to their work computer. If that worker tries to access the mapped drive he or she will get the following error. Path is not accessible. You might not have permission to use this network resource. Contact the administrator of this server to find out if you have access permissions. Access Denied. Before opening files in this location, you must first add the web site to your trusted site list, browse to the web site, and select the option to login automatically’ The user receives this error because the session cookie  for SharePoint Online has expired and must be “refreshed” in order to successfully access the mapped network drive again.            

Preview of coming changes to the external sharing features in SharePoint Online

When the SharePoint 2013 updates start getting rolled out to your SharePoint Online sites, you will notice some changes and improvements to the external sharing capabilities in SharePoint Online: The experience for managing external sharing (for example, turning it on or off) has been streamlined and simplified. Site users will also have more options for how they choose to share content. They can: Share sites or documents with external users by requiring them to sign-in to the site. Share documents with anonymous users through the use of guest links Finally, the sign-in experience for external users who receive invitations to access or view content on SharePoint Online sites will be updated to make the experience a bit more straightforward. Managing external sharing in Office 365 Enterprise Plans In Office 365 Enterprise plans, SharePoint Online admins will be able to manage external sharing centrally from the SharePoint Online admin center.  On the Settings page in the SharePoint Online admin center, admins can turn external sharing on or off globally for the entire tenant, or they can choose to allow only specific kinds of external sharing (e.g., allow sharing only with sign-in). One key change coming for Enterprise plans is that admins can also centrally manage external sharing for individual site collections directly from the SharePoint Online admin center. They can choose to turn external sharing on or off for one or more site collections or they can control which level of sharing is allowed for specific site collections.     SharePoint Online admins with Enterprise plans will also have the option of using Windows PowerShell cmdlets in the SharePoint Online Management Shell to perform tasks such viewing a list of all external users or bulk removing external users. For more information about configuring and managing external sharing in Office 365 Enterprise plans, see Manage external sharing for your SharePoint Online environment.     Managing external sharing in Office 365 Small Business plans If you have an Office 365 Small Business plan, the admin experience for managing external sharing is even more streamlined. You have a simple on/off switch in the Office 365 Service Settings for the external sharing feature. You can also use the Remove individual external users link to remove external users so that they no longer have access to sites or content that has been shared with them.   For more information about managing external sharing in Office 365 Small Business plans, see Manage sharing with external users . Sharing content.   Sharing content For site users, the option to share is easy to discover and use. You can use the Share command to quickly invite users to access a site. You can send invitations to any email address. Invitation recipients can sign in using a Microsoft account or a Microsoft Office 365 user ID.   The process for sharing documents with users by requiring sign-in is the same (although you would click the Share command from the document’s menu).     For more information about how to share sites or documents, see Share sites or documents with people outside your organization .    Thanks for reading!   Laura SharePoint IW Content Team

Microsoft Project Online frequently asked questions #ProjectOnline #Office365

Following the recent worldwide Project Ignite tour my colleague Jan Kalis organized as well as presentations at events like SharePoint Conference 2012 last week, please find below a summary of frequently asked questions (FAQs) about Microsoft Project Online I have been asked by customers and partners. Before I start please note that this is a journey and I’m sure you have plenty more questions and yes we will have plenty more answers and content to help you understand the value of Project Online and how it can bring value to your organization. Also please note that the 8 questions below are not sorted in any specific order, and yes if you have additional questions please leverage the Project Online forum on TechNet . Delivers full Project Portfolio Management (PPM) in the cloud Yes Microsoft Project Online delivers full project portfolio management capabilities in the Office 365 cloud. Project Online delivers all key scenarios/functionality expected from a PPM solution such as demand management , resource management, financial management, time management, collaboration & social, etc. As mentioned during the Ignite tour the product team only built and shipped one product called Project Server 2013 which gets delivered in different channels like online in Office 365 or on-premise like TechNet & MSDN subscribers. So yes there is full PPM functional feature parity in Online and on-premise whether you want to be firing on all 12 cylinders with a maturity level 3 or if you are just starting with a PPM system. We are also working on document that will be published on TechNet that describes some of the technical differences. Achieve on-premise to Online migration A very common request from many customers, how can I move to Project Online from my existing PPM system whether it’s an older version of Project Server or whether it’s from a online competitor? Again we will provide guidance, but at a high level you can either do it manually once depending on the amount of data, or you can automate the process using third party tools such as: FluentPro Cloud Migrator Pro ( Want to test-drive Project Online? How to migrate data from on-premises to Online? ); please also remember that you will also have to migrate the SharePoint content to SharePoint Online (plenty of tools available today to help you achieve this, BING them!). Connect Online to on-premise Line Of Business Apps Moving to Project Online does not isolate you from your mission critical on-premise line of business applications such as an ERP, CRM, ticketing, etc. SharePoint Online and Project Online provide a very rich extensibility model to help you connect the two world regardless of your needs. It could as simple as leveraging existing API such as OData or CSOM, or you could leverage Business Connectivity Services for instance. We are working on whitepaper that will get published early next year that will demonstrate the integration (how to push data from on-premise to Online and how to retrieve data on-premise from Online) and provide starting points to enable it. Track using ODATA and customize using CSOM In an Online world we cannot give you direct database access for obvious security reasons! and hence the protocol/mechanism to access all your beloved PPM data (yes including timephased data) is via the OData protocol. To build apps and do any custom code the API of choice is CSOM, please check the Project & SharePoint Software Development Kit (SDK) on MSDN to learn about each. Preview is for temporary use only (see Preview FAQ ) The preview has been available since July 16th 2012, when Steve Ballmer disclosed the new version of Microsoft Office (which Project desktop, Project Server and Project Online is part of!). The Preview is free but it’s for temporary use only until the commercial service is available, you read the Preview FAQ and navigate to the very end which says: “the Preview will expire approximately 60 days after the next version of Office becomes available in your market. As the date approaches, you will receive notifications in the Office applications alerting you to the pending expiration. Once the Preview has expired, the applications enter read-only mode, which means that you can view or print documents only, it isn’t possible to create new documents, edit, or save them. You must uninstall the Preview version of Office before installing a newer version of Office.” So yes, please kick the tires, try it out, check out some some of the cool new scenario and features (I love this one …: Microsoft Project Online on Xbox ) but please remember that at the end of the Preview all the data will be lost unless you save it locally. With that in mind and specially with a PPM system, a lot of learning and processes needs to be put in place before a production rollout, so treat this as a free proof of concepts environment! Office 365 is an evergreen service. Customers need to stay current What started with a Preview in our Office 365 worldwide data centers (aka a beta/pre-released version of Project Server 2013), and since the RTM announcement last month and the availability of the products on TechNet/MSDN/Volume Licensing/Trials, the online service has been updated with the RTM products during the past month. So yes it’s a Preview offer but with the latest version of the product! Yes we are still all learning and we are continuously updating the services until it’s ready for general availability (GA). So back to my point earlier, please try it out because it contains the latest fit and polish not to mention the latest bug fixes. In the end, one of the key value of online is that it will always have the latest and greatest version of Microsoft’s PPM, and that includes Exchange, Lync, SharePoint, Office, hence think of the “evergreen PPM”! Azure VM (IaaS) vs. Project Online (SaaS) Azure Virtual Machine (VM) which a preview was disclosed last May, is an upcoming offer from the Windows Azure team which will give you the ability to purchase CPU, memory, and storage in the cloud to run your application in a virtualized environment such as  SharePoint and Project Server for instance. As announced last may, SharePoint 2010 is supported on Azure VM (see SharePoint Deployment on Windows Azure Virtual Machines ), and yes Project Server 2010 will also be supported initially and later 2013 will be. The question one need to think about is whether to go with Infrastructure as a service (IaaS) or other options such as software as a service (SaaS) or partner hosted or on-premise. Bottom line, Microsoft PPM is about choice and we will provide plenty of options to deploy and use it! Again we are working on a white paper and guidance on these options and how they can fulfill your needs today and tomorrow. Use the Project Online Forum and Wiki for Questions & Answers As mentioned at the beginning of this post, I’ve only covered a few question above and I’m sure you have a few more based on some the answers provided above and also based on other Project Online questions you might have so from this point forward I want you to start leveraging the following resources to get answers: Project Online forum , yes it’s monitored by Microsoft product experts, by Microsoft support personnel, by Microsoft Project MVPs and many others so don’t be shy, it’s free! Project Online Preview Wiki Portal , going forward our wiki will get richer and richer with key service information. Other valuable Microsoft Online resources : Steve Ballmer’s letter on October 9, 2012:  TO OUR SHAREHOLDERS, CUSTOMERS, PARTNERS AND EMPLOYEES Global Foundation Services (and their blog ) Office 365 Trust Center (check out the industry standards for instance) Service Updates for Office 365 for enterprises (check out monthly updates)

Installing the Project 2013 SDK download on Windows 8

The Project 2013 SDK download is updated for the RTM release of Project 2013. In addition to articles, references, and code samples that are updated from the July release of Project 2013 Preview, the SDK also includes a local copy of VBA Help for Project Standard and Project Professional. You can install the downloaded Project2013SDK.msi file on computers that are running Windows 8, Windows 7 (and a couple of earlier Windows releases), Windows Server 2008 R2, and Windows Server 2012. When you install the SDK on a Windows 7 machine, the SDK contents are accessible from the Start menu. Figure 1 shows, for example, that the Microsoft SDKs folder contains the Project 2013 SDK folder, which contains links to three files. From the hierarchical context of the Start menu, it is clear that the Documentation node is contained in the Project 2013 SDK folder. Similarly, if you install the SharePoint 2013 SDK download and the Apps for Office and SharePoint SDK download , they each create a folder in Microsoft SDKs , and each SDK has a Documentation node within its folder. Figure 1. Using the Project 2013 SDK from the Windows 7 Start menu The problem Windows 8 does not have a Start menu, it has two related Start screens. After you install the Project 2013 SDK download, and scroll the main Start screen to the links for the installed files, you can see the same three links as in Windows 7. (To see the Welcome Guide on the Start screen, you can search for Welcome.rtf , open it in Internet Explorer, and then pin Welcome Guide to the Start screen.) But , the Start screen in Windows 8 is not arranged in hierarchical folders. In Figure 2, it is not clear what the Documentation link is for. Figure 2. Using the Documentation link to the Project 2013 SDK, on the Windows 8 Start screen The problem is worse if you also install the SharePoint 2013 SDK and the Apps for Office and SharePoint 2013 SDK. You would then have three Documentation links and three Welcome Guide links, each of which goes to a different SDK. If you right-click one of the Start screen icons, the icon shows a check mark, and the Start screen shows options at the bottom (see Figure 2). If you choose All apps at the bottom right of the screen, Windows 8 shows lists of installed apps within top-level groups. For example, the Microsoft SDKs group contains links for all of the Office, Project, and SharePoint SDKs that you install; there are no subfolders to distinguish which links go to which SDK. In Figure 3, only the Project 2013 SDK is installed, and the links have the same names as in Figure 2. Figure 3. Using the Project 2013 SDK links in the Apps view, in Windows 8 The workaround (for now) On a machine with Windows 8, you can install one SDK at a time, and then rename the links on the Start screen, before installing another SDK. To install Office, Project, and SharePoint SDKs on Windows 8 Log on to Windows 8 as an administrator. Install, for example, the Project 2013 SDK. On the Start screen, right-click the Documentation icon, and then choose Open file location at the bottom of the screen. On the Windows Desktop, rename the Documentation link as Project 2013 SDK Documentation , and then choose Continue in the File Access Denied dialog box (see Figure 4). Figure 4. Renaming the Project 2013 SDK links in the Desktop view Similarly, rename the VBA Reference link as Project 2013 VBA Reference , and rename the Welcome Guide link as Project 2013 Welcome Guide . With the mouse pointer in the lower-left corner of the screen, choose the Start pop-up icon, and then scroll to the Project 2013 SDK icons (see Figure 5). Figure 5. Using the renamed links in the Start view Install the Apps for Office and SharePoint 2013 SDK, and similarly rename the Start screen links. Install the SharePoint 2013 SDK, and similarly rename the Start screen links. Figure 6 shows the Microsoft SDKs group with the renamed links in the All apps view. Figure 6. Using the renamed links for all three SDKs in the All apps view In future releases, the Office, SharePoint, and Project SDK downloads will be reconfigured so that they install with non-conflicting link names on Windows 8.  

Lync Online: PowerPoint Sharing Feature

Using Lync and PowerPoint, an Office 365 user can give PowerPoint presentations, record them, and work collaboratively on PowerPoint slides during a Lync Meeting with as many as 249 other people. This article describes how to use this feature.   Author : Alexandra Lise Publication date : November 6, 2012 Product version : Lync Online   Lync’s sharing feature gives Office 365 users a way to share PowerPoint presentations with colleagues in different locations. Users can present information from slides or take advantage of Lync’s collaboration features and work together on a presentation to be delivered later. Collaboration features enable users to give control to other users while the annotation tools help groups focus on certain parts of a presentation. Sharing sessions can be done ad hoc or during a scheduled Lync Meeting. Getting Started To help Lync Online users set up a sharing session , point them to the following topics:   Set up a Lync Meeting — explains how to schedule an online meeting by using Outlook or Lync Web Scheduler . TIP: To be able to set up Lync Meetings users must be enabled for dial-in conferencing. For details, see Configure Dial-in Conferencing .   Start an impromptu Lync Meeting — explains how to invite one person or a group of people to join a Lync IM conversation and add audio and/or video. Presenting and Recording To give a presentation 1. In a meeting or conversation window, pause on the presentation (monitor) icon, and then click PowerPoint . Figure 1. Selecting PowerPoint in the meeting window. 2. Options: To move the slides, use either the arrows at the bottom of the meeting window or click Thumbnails , and then click the slide you want to show To see your presenter notes, click Notes . To use the laser pointer, highlights, shapes, the eraser, pen, text changer, and other annotation tools, on the upper-right side of the slide, click the Annotations button — then click the type of annotation you want to use. Note : annotating doesn’t change the actual file, although, if you want to, you can save an annotated copy. To prevent someone from skipping ahead or using annotations, in the meeting window, click More Options , click Lync Meeting Options , and then select the permissions level for the participant(s). To record a presentation 1. In the meeting or conversation window, click More Options , and then click Start Recording Figure 2. Figure 2. Starting recording. 2. (Optional) Use the controls at the bottom of the window to pause and resume recording. 3. When finished, click the Stop Recording button. Lync automatically saves the recording in a format that plays in Windows Media Player and Zune. Figure 3. Stopped recording notification. To manage a presentation To prevent people from downloading the presentation, during a sharing session, hover over presentation (monitor) icon, click the Manage Presentable Content button, and then click the Permissions menu and the appropriate option. To prevent people from annotating or skipping ahead, in the meeting window, click Meeting Options , click Lync Meeting options , and then select the appropriate permissions. To save someone else’s presentation or an annotated copy, during a sharing session, pause on the presentation (monitor) icon, click the Manage Presentable Content button, click More , and then select the saving option. To edit a presentation together To give control to another person, click Give Control on the sharing bar at the top of your meeting window. Then either click an individual attendee or click Give Control Automatically to grant control to anyone who requests it during the sharing session. To take back control at any time click the Give Control again, then click either the name of the person who has control or Give Control Automatically if it’s selected. Lync’s sharing and collaboration tools, combined with PowerPoint’s ability to organize and feature important information, give Office 365 users an effective way to present information to remote users in large and small audiences, It also enables users to work with colleagues— in scheduled or impromptu sessions— to develop, refine and style presentation content. Additional Resources To learn more, check out the following articles: Lync 2013 for Office 365 Sharing and Collaboration Quick Reference Record and Playback a Lync Meeting Introduction to the Lync Meeting Window   Keywords : Lync Meeting, PowerPoint, present, annotations

Connecting a Project Task Pane App to PWA

Introduction Apps for Office present a great new opportunity to bring data from a variety of sources into Office applications. The new Project specifically offers a very powerful way to surface both SharePoint and Project Web App data in a task pane app in Project Professional. To connect with SharePoint or PWA from the client, we use on-the-fly OAuth flow as presented in the SharePoint 2013 SDK . The App for Project described in this article connects with the same PWA site collection that Project Professional is currently connected to, and displays data about the currently selected task that is not otherwise available from within Project Professional. This will work with all versions of Project Professional (C2R, MSI, On Demand) and with all PWA environments (Project Online, Project Server). Setup Prerequisites for this project are: Visual Studio 2012 IIS or IIS Express configured to allow applications to run on your server (at localhost) Office 2013 and SharePoint 2013 tools for Visual Studio, available here Project Professional 2013 Project Online tenant or Project Server The first step is to launch Visual Studio 2012. Create a new App for Office 2013 project as shown below. Let’s call it “TaskLastModifiedApp”. In the next dialog, make this a Task Pane App for Project. We need to add references, as this app will use a number of APIs across Office and SharePoint. These DLLs may be in a different location on your system. Most of these references are automatically added if you use the App for SharePoint template, so if you can’t find these on your system, create a quick App for SharePoint solution and note the reference paths to help you out. You should add: C:Program FilesReference AssembliesMicrosoftWindows Identity Foundationv3.5Microsoft.IdentityModel.dll C:WindowsMicrosoft.NETassemblyGAC_MSILMicrosoft.IdentityModel.Extensionsv4.0_2.0.0.0__69c3241e6f0468caMicrosoft.IdentityModel.Extensions.dll C:Program FilesReference AssembliesMicrosoftWindows Identity Foundationv3.5Microsoft.IdentityModel.WindowsTokenService.dll C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions15ISAPIMicrosoft.ProjectServer.Client.dll C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions15ISAPIMicrosoft.SharePoint.Client.dll C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions15ISAPIMicrosoft.SharePoint.Client.Runtime.dll C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.0System.IdentityModel.dll C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.0System.IdentityModel.Selectors.dll C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.0System.ServiceModel.dll Additionally, you will need to add a copy of TokenHelper.cs, which is generated when creating an autohosted or provider-hosted App for SharePoint project. Task Pane App Manifest The actual task pane app is just an XML manifest. Open up TaskLastModifiedApp.xml from the TaskLastModifiedApp project in your Solution Explorer. Replace its contents with the following: 1: 2: 3: [leave this line alone] 4: 1.0 5: Microsoft 6: en-US 7: 8: 9: 10: https: //localhost:44301/ 11: 12: 13: 14: 15: 16: 17: 18: ReadWriteDocument 19: Replace the port after localhost (in both instances) with whatever port you have configured IIS to use for SSL. Make sure to toggle the “SSL Enabled” property on the TaskLastModifiedAppWeb project to true. Let whatever ID was originally set in the manifest remain. Architecture Next, delete the TaskLastModifiedApp.html page – we will need .aspx pages in this project. The basic architecture of the task pane app is as follows: When the task pane app is launched, it loads “URLConstructor.aspx”, which pulls the PWA URL from the client and constructs a call to OAuthAuthorize with the proper tokens to request permissions for the app to access PWA data. This page loads “URLConstructor.js” to interact with the client. OAuthAuthorize is launched in a new window, since we cannot predict the customer’s Project domain. After the user trusts the app, that new window is redirected to “PostOAuth.aspx”, which surfaces the auth code back to URLConstructor.aspx. Once URLConstructor.aspx has the auth code, the task pane app is redirected with this as a token to “Default.aspx”, which has the functional code for the app. This page uses Project CSOM code in its code-behind page to read data from PWA, as well as “TaskLastModifiedApp.js” to interact with the client. Constructing the OAuthAuthorize URL The complete code for URLConstructor.aspx is as follows: 1: 2:   3: 4:   5: 6:   7: 8: TaskLastModifiedApp 9: 10: 11: 12: 13: 14: function getClientId() { 15: var clientId = ‘ ‘ ; //read the clientID from web.config 16: getPwaUrl(clientId); //return to client code 17: } 18: 19:   20: 21: Redirecting… 22: 23:   24: This page needs to be an .aspx page in order to read from web.config, but does not need anything in its code-behind. The clientId read from web.config is needed for the authorization flow. getPwaUrl() is a function within URLConstructor.js. The complete code for URLConstructor.js is as follows: 1: var _projDoc; 2: var pwaUrl; 3: var oAuthUrl; 4:   5: Office.initialize = function (reason) { 6: _projDoc = Office.context.document; 7: getClientId(); //on document load, reads the ClientId from web.config first since it is server-side 8: } 9:   10: function getPwaUrl(clientId) { //uses Office App API to read PWA URL 11: _projDoc.getProjectFieldAsync(Office.ProjectProjectFields.ProjectServerUrl, 12: function (asyncResult) { 13: if (asyncResult.status == Office.AsyncResultStatus.Succeeded) { 14: pwaUrl = asyncResult. value .fieldValue; 15: generateUrl(clientId); //creates the OAuthAuthorize URL with necessary parameters 16: } 17: else { 18: logMethodError( “getProjectFieldAsync” , asyncResult.error.name, asyncResult.error.message); 19: } 20: } 21: ) 22: }; 23:   24: function generateUrl(clientId) { 25: oAuthUrl = pwaUrl + “/_layouts/15/OAuthAuthorize.aspx?IsDlg=1&client_id=” + clientId + “&scope=Projects.Read&response_type=code&redirect_uri=https://localhost:44301/pages/PostOAuth.aspx” ; 26: authWindow = window.open(oAuthUrl); 27: codeListener(); //start listening for the auth code 28: } 29:   30: function codeListener() { 31: setTimeout(function () { readCode(); }, 1000); //check for the auth code every one second 32: } 33:   34: function readCode() { 35: try { //if we can actually reach the authCode field on PostOAuth.aspx 36: authCode = authWindow.document.getElementById( “authCode” ). value ; //pull the authCode value 37: if (authCode != “NA” ) { //if it is not the default “NA” 38: authWindow.close(); //close the new window 39: document.location.href = “/Pages/Default.aspx?code=” + authCode; //redirect task pane to the app code with the authCode token 40: } 41: } 42: catch (e) { 43: codeListener(); //if we couldn’t reach PostOAuth.aspx, wait another second and try again 44: } 45: } When the task pane app loads, it first reads web.config from the aspx page, since this is server-side code. Once it has the clientId, we read the PWA URL. We then create the full OAuthAuthorize URL with the parameters specified above. scope=Projects.Read requests read permission to projects on the current PWA site. Make sure to match the SSL port here as well, as before. On running the app, a new window will open up outside of Project that prompts the user to login to PWA (if they have not checked “Keep me signed in” previously). They will then be presented with a “Do you trust…” page, the same as if they were installing an App for SharePoint. This is the OAuthAuthorize.aspx page. Once trusted, that new window navigates to PostOAuth.aspx, presented below: 1: 2:   3: 4:   5: 6: 7: 8: 9: 10: 11: 12: 13: Closing… 14: 15: 16: 17: And PostOAuth.aspx.cs: 1: using System; 2: using System.Collections.Generic; 3: using System.Linq; 4: using System.Web; 5: using System.Web.UI; 6: using System.Web.UI.WebControls; 7:   8: namespace TaskLastModifiedAppWeb.Pages 9: { 10: public partial class PostOAuth : System.Web.UI.Page 11: { 12: protected void Page_Load( ob
ject sender, EventArgs e) 13: { 14: var code = Request.QueryString[ “code” ]; 15: authCode.Value = code; 16: } 17: } 18: } This page saves the auth code token in a hidden field. The task pane app, still on URLConstructor.aspx, waits for this value and then closes the new window. The app then continues on to default.aspx with the proper code token needed to finish the OAuth flow. Reading the Last Modified Date of the Selected Task The remainder of this article is an example of what you might do in your task pane app now that you have read access to PWA data. This example will show you the Last Modified date and time of the task you have selected. On launch, it shows you data for the selected task, and as you change tasks, the data is updated using an event handler. The complete code for Default.aspx is as follows: 1: 2:   3: 4:   5: 6: 7: TaskLastModifiedApp 8: 9: 10: 11: 12: 13: 14:   15: 16: 17: 18: 19: 20: 21:   22: 23:   24: 25: 26: 27:   28: 29:   30: 31: This page contains three hidden fields used to pass data back and forth between the client-side code and the server-side code. It also leverages a label to surface the results to the user, and a hidden button that the client-side code uses to call a server-side function, as you will see below. The complete code for TaskLastModifiedApp.js is as follows: 1: var _projDoc; 2: var taskGuid; 3: var projGuid; 4: var pwaUrl; 5:   6: // This runs after every postback 7: Office.initialize = function (reason) { 8: _projDoc = Office.context.document; 9: if (document.getElementById( “pwaUrlHF” ). value == “NA” ) { //if this is the first run 10: firstRun(); 11: } 12: manageTaskEventHandler( ‘addHandlerAsync’ ); //need to re-register event handler after each postback 13: } 14:   15: // Only need these on the first page load, not on postbacks 16: function firstRun() { 17: getProjGuid(); 18: _projDoc.getProjectFieldAsync(Office.ProjectProjectFields.ProjectServerUrl, 19: function (asyncResult) { 20: pwaUrl = asyncResult. value .fieldValue; 21: document.getElementById( “pwaUrlHF” ). value = pwaUrl; 22: } 23: ) 24: getTaskGuid(); 25: } 26:   27: // Get the GUID of the selected task, comes from SDK 28: function getTaskGuid() { 29: var TaskLastModLabel = document.getElementById( “TaskLastModLabel” ); 30: TaskLastModLabel.innerHTML = “Loading…” ; 31: _projDoc.getSelectedTaskAsync(function (asyncResult) { 32: taskGuid = asyncResult. value ; 33: document.getElementById( “taskGuidHF” ). value = taskGuid; //saves the task GUID to a hidden field to pass to the code-behind 34: document.getElementById( “hiddenTaskChangedButton” ).click(); //runs the CSOM calls in the aspx.cs file 35: }); 36: } 37:   38: // Get the GUID of the current project. 39: function getProjGuid() { 40: _projDoc.getProjectFieldAsync(Office.ProjectProjectFields.GUID, 41: function (asyncResult) { 42: projGuid = asyncResult. value .fieldValue; 43: document.getElementById( “projGuidHF” ). value = projGuid; //saves the project GUID to a hidden field to pass to the code-behind 44: } 45: ) 46: } 47:   48: // Task selection changed event handler. 49: function onTaskSelectionChanged(eventArgs) { 50: getTaskGuid(); 51: } 52:   53: // Add or remove a task selection changed event handler. 54: function manageTaskEventHandler(docMethod) { 55: manageEventHandlerAsync( 56: Office.EventType.TaskSelectionChanged, // The task selection changed event. 57: onTaskSelectionChanged, // The event handler. 58: docMethod // The Office.Document method to add or remove an event handler. 59: ); 60: } 61:   62: // Add or remove the specified event handler. 63: function manageEventHandlerAsync(eventType, handler, operation, onComplete) { 64: _projDoc[operation] //The operation is addHandlerAsync or removeHandlerAsync. 65: ( 66: eventType, 67: handler, 68: function (asyncResult) { 69: // code here runs after event has been registered (or failed) 70: } 71: ); 72: } The first time this code runs, it pulls the PWA URL (just like we did in URLConstructor.js) and saves it to one of our hidden fields, registers a client-side event handler to capture when a new task is selected, and starts the process of connecting to PWA and pulling the data we need, which is mostly done in the code-behind file. After each postback, we do not need to recapture the PWA URL, as our ProjectContext is maintained as a static variable. We need to make one quick tweak to TokenHelper.cs first – change GetRealmFromTargetUrl from a private method to a public method. The complete code for Default.aspx.cs is as follows: 1: using System; 2: using System.Collections.Generic; 3: using System.Linq; 4: using System.Web; 5: using System.Web.UI; 6: using System.Web.UI.WebControls; 7: using Microsoft.ProjectServer.Client; 8: using Microsoft.SharePoint.Client; 9:   10: namespace TaskLastModifiedAppWeb.Pages 11: { 12: public partial class Default : System.Web.UI.Page 13: { 14: public static ProjectContext projContext; 15: public static PublishedProject thisProj; 16: public Guid projGuid; 17:   18: protected void Page_Load( object sender, EventArgs e) 19: { 20: if (!IsPostBack) //set values of hidden fields if this is the first page load 21: { 22: projGuidHF.Value = “NA” ; 23: taskGuidHF.Value = “NA” ; 24: pwaUrlHF.Value = “NA” ; 25: } 26: } 27:   28:   29: protected void GetContexts() 30: { 31: var code = Request.QueryString[ “code” ]; //pulls the code token from the request 32:   33: string targetPwa = pwaUrlHF.Value; //pulls the PWA URL from where the Office app API stored it 34:   35: Uri targetPwaUri = new Uri(targetPwa); 36:   37: var tRealm = TokenHelper.GetRealmFromTargetUrl(targetPwaUri); 38:   39: Uri rUri = new Uri( “https://localhost:44301/pages/PostOAuth.aspx” ); //hardcoded link to redirect_uri 40:   41: var clientContext = TokenHelper.GetClientContextWithAuthorizationCode(targetPwa, “00000003-0000-0ff1-ce00-000000000000” , code, tRealm, rUri); 42:   43: projContext = GetProjectContextWithAuthorizationCode(targetPwa, “00000003-0000-0ff1-ce00-000000000000” , code, tRealm, rUri); 44:   45: projGuid = new Guid( “{” + projGuidHF.Value + “}” ); //loads the current project through CSOM 46:   47: var projects = projContext.LoadQuery(projContext.Projects.Where(proj => proj.Id == projGuid)); 48: projContext.ExecuteQuery(); 49: thisProj = projects.First(); 50: } 51:   52: protected void OnTaskChanged( object sender, EventArgs e) //determine the selected task’s last modified date 53: { 54: if (thisProj == null ) 55: { 56: GetContexts(); 57: } 58: 59: var taskGuid = new Guid(taskGuidHF.Value); 60:   61: var tasks = projContext.LoadQuery(thisProj.Tasks.Where(task => task.Id == taskGuid)); //load the selected task off of the project 62: projContext.ExecuteQuery(); 63: PublishedTask thisTask = tasks.First(); 64: string dateMod = thisTask.Modified.ToString( “D” ); //pull out the Modified field on the task 65: string timeMod = thisTask.Modified.ToString( “t” ); 66: TaskLastModLabel.Text = “The selected task was last modified on ” + dateMod + ” at ” + timeMod + “.” ; 67: } 68:   69: public static ProjectContext GetProjectContextWithAuthorizationCode( string targetUrl, string targetPrincipalName, string authorizationCode, string targetRealm,Uri redirectUri) 70: { 71: Uri targetUri = new Uri(targetUrl); 72:   73: string accessToken = 74: TokenHelper.GetAccessToken(authorizationCode, targetPrincipalName, targetUri.Authority, targetRealm, redirectUri).AccessToken; 75:   76: return GetProjectContextWithAccessToken(targetUrl, accessToken); 77: } 78:   79: public static ProjectContext GetProjectContextWithAccessToken( string targetUrl, string accessToken) 80: { 81: Uri targetUri = new Uri(targetUrl); 82:   83: ProjectContext projContext = new ProjectContext(targetUrl); 84:   85: projContext.AuthenticationMode = ClientAuthenticationMode.Anonymous; 86: projContext.FormDigestHandlingEnabled = false ; 87: projContext.ExecutingWebRequest += 88: delegate ( object oSender, WebRequestEventArgs webRequestEventArgs) 89: { 90: webRequestEventArgs.WebRequestExecutor.RequestHeaders[ “Authorization” ] = 91: “Bearer ” + accessToken; 92: }; 93:   94: return projContext; 95: } 96: } 97: } PageLoad() The f
irst time the page loads, we need to initialize the hidden field values. This enables us to not set them directly in Default.aspx (and thus lose their values after a postback) and lets the client-side code distinguish between a first run load and a postback. GetContexts() This code also only runs once, assuming the current project remains loaded. This handles the last part of the OAuth flow – we use the code token from OAuthAuthorize to generate a client context and a project context using methods in TokenHelper.cs, as well as slightly modified methods GetProjectContextWithAuthorizationCode() and GetProjectContextWithAccessToken(). OnTaskChanged() This first checks to make sure we have a project loaded from which to pull data. We then read the selected task guid from the hidden field, which was updated client-side before this method was called. We use Project CSOM to load the selected task from PWA and read its Last Modified field, which is then presented to the user in a readable format using the label on Default.aspx. Register the App ID and App Secret Since we are not submitting this app to the Office Store, we need to register it on our test tenant. On your tenant, navigate to https://[your PWA site]/_layouts/15/appregnew.aspx. Generate a new App Id and App Secret, set the Title to “TaskLastModifiedApp”, set the App Domain to localhost:44301 (or wherever the app code is running), and set the Redirect URI to match the redirect_uri token value in the oAuth URL created in URLConstructor.js. Hit Create, and then add the App Id and App Secret to web.config in your Visual Studio solution. It should look like the following when you are done, with your values for ClientId and ClientSecret: 1: 2:   3: 4: 5: 6: 7: 8: 9: 10: 11: Time to Test! To run the app, just hit F5 in Visual Studio, which will launch Project Professional. Make sure to connect to a PWA profile, then load a published project (or create and publish a new one). From a task view, select the Project tab in the ribbon, hit the dropdown for Apps for Office, and click TaskLastModifiedApp. The app will launch in a task pane on the right side of the screen. It’ll prompt you to trust the app, quickly load, and then display the last modified date and time of the selected task. Select a different task, and the data will update almost instantly. Wrap-Up In this blog post, you have learned how to create a task pane app in Project Professional that can display data from PWA that would not normally be visible in the client. The app uses SharePoint’s OAuthAuthorize page to request permissions from PWA and handle the authentication handshake between the app code and your online data. For more on working with OAuth, make sure to check out the relevant node in the SharePoint 2013 SDK. For more information on PWA programmability, check out the Project 2013 SDK . To learn more about writing task pane apps for the new Project, see this node in the Office 2013 SDK .

New Office Web Apps Features Coming Your Way

One of the great things about a service is that when a feature is ready, we can ship it. So today Office 365 customers will start to see the latest Office Web Apps features. For those of you on the Office 365 Preview, you’ve already had a sneak peek at what’s new. For the rest of you, a refresher on what Office Web Apps are, and highlights of new capabilities beginning to roll out in this Office 365 service update, visible when working with your attachments and documents within Exchange Online and SharePoint Online. What are Office Web Apps? Using browser-based Office Web Apps you can view, collaborate on and share documents, presentations, spreadsheets and notes from anywhere, whether Office on the desktop is available or not. What’s New? For this latest round of updates, we’ve focused on adding editing and formatting controls, consistent co-authoring/collaboration support across the web apps and expanded device support, including touch-enabled editing from tablets . Across the apps, there’s also a clean new look and feel, informed by the updated design language you’re seeing from across Microsoft. In Word Web App , get new support for viewing and adding comments . You’ll also see graphics, images, and layout with excellent fidelity. Format and design documents right from a browser with commonly used features from Word on the desktop, including new page layout tools, picture tools and word count. In addition to comment support, new co-authoring in Word Web App makes it easier to work together on the web. With Excel Web App you get essential spreadsheet features, such as merge cells, context menus, auto-fit columns, formula assistance, fill handle and AutoSum. Manipulate and visualize data for deeper insights with support for high fidelity charts including 3D, improved Query Table and Data Validation support, Slicer functionality and Pivot Chart interactivity. When using PowerPoint Web App presentations look like they do on the desktop, with high-resolution slides, full transitions, and viewable comments. Audio and video playback is now supported, even from a tablet or phone. Drag and drop support makes for easier layouts. While the ability to insert images, apply transitions and animations, or add a pre-designed theme make polished presentations from a browser possible. And new co-authoring and comment support in PowerPoint Web App improves collaboration in the cloud. OneNote Web App updates . Users can find what they need more easily with the ability to search on a page or within a section. And new support for ink viewing makes more information accessible from the web. Just click to type anywhere on the page to add a note, picture or a tag. Notes can now be shared as a URL, viewable on a phone, PC or tablet through a browser. Not only are we delivering new features, but we’ve done some work on the backend to make it easier to update and deploy new Office Web Apps features and services. We’ve decoupled Office Web Apps from SharePoint Online. The two services will continue work well together. However, by deploying Office Web Apps as a standalone service, we can ship improvements when they’re ready, independent of the SharePoint Online ship cycle (and vice versa). Additionally, by serving all of our hosts out of one service center, customers will see more consistency between the Office Web Apps available as part of Office 365 and our consumer service, SkyDrive. In fact, over the weekend the Office Web Apps on SkyDrive hit general availability , bringing the latest updates to consumers within days of our rollout on Office 365. Browser Support Changes As we shared with you this spring, we’re no longer supporting IE7 across Office 365 services . If you are using IE7 with the updated Office Web Apps, they won’t render properly. Update to IE 8 or higher to take advantage of the new Office Web Apps features. That’s just the tip of the iceberg. Want to learn more about new Office Web App functionality? Take a look at  Office Web App Group Program Manager, Mike Morton’s, blog post for a deep dive into the latest features from in Office Web Apps. What? When? Customers may start to see these changes today. As we continue to roll out the service update worldwide, all Office 365 customers will experience all the new Office Web App goodness by the early part of next year.