Spark the future.
May 4 – 8, 2015Chicago, IL
Developer to Developer: Meeting Custom Needs with Microsoft ProjectAesha ShahDan MacDonaldEli Sheldon
BRK3120
Developing for Microsoft Project
What is Microsoft Project Online \ Project ServerMicrosoft Project Online is a flexible online solution for project portfolio management (PPM) and everyday work. Delivered through Office 365, Project Online enables organizations to get started, prioritize project portfolio investments and deliver the intended business value—from virtually anywhere on nearly any device.
Microsoft Project Server 2013 is a flexible on-premises solution for project portfolio management (PPM) and everyday work. Team members, project participants, and business decision makers can get started, prioritize project portfolio investments and deliver the intended business value from virtually anywhere.
Apps
Apps Add-ins
Add-ins for SharePoint
Aesha ShahProgram Manager IIMicrosoft
SharePoint
SharePoint 2007
Sandbox
SharePoint 2010
SharePoint
Azure, IIS, LAMP, etc…
_api
SharePoint 2013
Extensibility Model: Past, Present and Future
OverviewCloud Ready ModelProject Server Add-ins are SharePoint Add-insWell defined lifecycle and isolation policiesWork on-premises and online with one codebaseCan be hosted in SharePoint (JS), Azure (.Net) or anywhere else
Web standards based technologiesEmbracing web technologies including HTML, JavaScript, REST/ODATA 4, Oauth 2.0
Add-ins should be simpleDesigned primarily as light-weight solutionsFull-blown solutions can be broken down into functions
Acquire add-in from integrated storesEasy to discover 3rd party add-ins and get more done
Hosting
SharePoint-Hosted Build your whole add-in or
use SharePoint for list and document storage in autohosted or provider-hosted add-ins.
Provider-hosted Used for add-ins that
require the greatest amount of flexibility and scalability and toolset and backend services that cross add-in instances.
Hosting options provide the flexibility and scalability your add-in needs
Project Server Add-in ScenariosCustom methodologies and templatesTargeted scenarios to specific industries (hospitals, IT, government, etc)
Line of Business application integrationAutomated timesheet data sync with ERP
Reporting dashboards and web partsSurface high-level real-time project data with no configuration needed
Contextual training contentTutorials and automated wizards
User ExperiencesImmersive full page (all add-ins)Implement complete app experiences
to satisfy business scenarios
Part (optional)Create parts that can interact with the SharePoint experience
UI custom actions (optional)Extend existing functionality with new commands
Add-In Launch<?xml version="1.0" encoding="utf-8"?><App xmlns="http://schemas.microsoft.com/sharepoint/2012/app/manifest" Name="AwesomeCharts" ProductID="{02416182-9d1b-4859-8ebb-560befab1c92}" Version="1.0.0.1" SharePointMinVersion="15.0.0.0"> <Properties> <Title>Awesome Charts</Title> <StartPage>~appWebUrl/Pages/Default.aspx?{StandardTokens}</StartPage> </Properties> <AppPrincipal> <Internal /> </AppPrincipal> <AppPermissionRequests> <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="Read" /> </AppPermissionRequests></App>
Part<?xml version="1.0" encoding="utf-8"?><Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <ClientWebPart Title="PayPalTest" Name="PayPal Test" Description="This is a basic app part with custom properties." ><Content Src="~appWebUrl/Pages/ButtonPage.aspx?{StandardTokens}&RemoteAppUrl=~remoteAppUrl&Price=_Price_" Type="html"/> <Properties>
<Property Name="Price" Type="string" RequiresDesignerPermission="true" DefaultValue="0" WebCategory="Product Info" WebDisplayName="Product's Price"> </Property>
</Properties> </ClientWebPart></Elements>
Custom Actions<?xml version="1.0" encoding="utf-8"?><Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <!-- Adds an ECB custom action to a list in the host web site. --> <!-- Create a new custom list and add a new item to it. This custom action will be on the new item's ECB --> <CustomAction Id="3f3fcc26-ace9-48ad-b58c-289131c369cf.HostWebPinAction" RegistrationType="ContentType" RegistrationId="0x01" Location="EditControlBlock" Sequence="100" Title=“PinThis!"> HostWebDialog="true" HostWebDialogHeight="500" HostWebDialogWidth="600"
<UrlAction Url="https://shareboard.azurewebsites.net/Pages/Default.aspx?{StandardTokens}&WebUrl={SiteUrl}&ItemId={ItemId}&ListId={ListId}" /> </CustomAction></Elements>
Office365 Apis• Released ~months ago• Restful APIs leveraging oData 4.0 and
oAuth 2.0• Allow apps to connect to data in any
Office365 workload (calendar, mail, oneDrive for Business, contacts, project – coming soon)
• Leverage Azure AAD as the auth provider to connect to your office365 identity to consume these resources
My Apps
My Apps
Distribution
End users and teams have access to the add-ins they need to get their job done
IT admins have the right tools and monitoring to empower users to acquire add-ins from the store
Integrated Store
Licensing models (Office365, SP and Add-Ins)
Duration User Limit
FreePerpetual Unlimited
Trial30d, 60d, 120d or unlimited
N (per user) or Unlimited
PaidPerpetual N (per user) or Unlimited
Subscription (new)
Monthly N (per user) or Unlimited
Corporate Catalog / ManagementInstall Any Add-in You WantAdd-ins can be installed directly without publishing into the marketplace or going through validation process
Catalog of All Your Add-ins All add-ins from marketplace and add-ins installed manually surfaced in one place
Manage Permissions and LicensesEasy to distribute to users and to change permissionsVisibility into add-in usage by all users
Project Add-ins
Eli SheldonProgram Manager IIMicrosoft
What is an Office Add-in?
Office Store or Add-in Catalog
Web server
Manifest(XML)
Web page(HTML + JS)+ =
Office Add-in
Supported by Project
What does an Office Add-in look like?
Task Pane Contextual Add-inContent Add-in
Adds embedded content /
functionality into document
Assists user working with one or more
documents
Detects content and offers additional
functionality
Project Add-insFunctionalityRead selected task/resource or any task/resource by IDWrite back to the projectData/settings persistence through local storageAdd-ins are loaded by the user and are not tied to the project plan
Specific Project set of APIs:Access to Tasks, Resources, Views, and Project containers getTaskAsync(), getProjectFieldAsync(), setResourceFieldAsync(), getMaxTaskIndexAsync()…Event handlers for task, resource, view changes taskSelectionChanged(), viewSelectionChanged()…
Yellow items are new in Project 2016!
Scenarios for Project Add-insExtended client functionalityScheduling suggestions and automatic fixes based on project management standardsContextual cloud-hosted training determined by views and selectionConnect social networking and external business solutions with Project
Surface SharePoint and Project Online content directly in the clientEnhanced cross-project decision making based on your full portfolioLeverage SharePoint collateral from project sites and team sitesBring Project Online data into Word, Excel, PowerPoint, Outlook
Development ToolsAny text editor will doHTML webpages and related JavaScript and CSS files XML manifest file defining locations, permissions and metadata
Microsoft Visual Studio provides the best experienceOffice Add-in tools and templates installed out-of-the-boxAllows rich debugging experience – one click to run your add-in in Project with familiar diagnostics and breakpointsFull IntelliSense support for Project Add-ins helps you hit the ground running along with MSDN documentation
Demo: Project Add-in
Eli Sheldon
Developer to Developer: Meeting Custom Needs with Microsoft ProjectDaniel MacDonald
Director of DevelopmentSensei Project Solutions
Your Presenter
Daniel MacDonaldDirector of Development, Sensei Project SolutionsPast 20 years working with Microsoft development platformsProject Server and Project developmentLeading Apps Initiative at Sensei Project Solutions
Meeting Custom Needs with Microsoft Project
Learning MoreResources for Project Development
Developing for Microsoft ProjectCSOM, JSOM and More
Microsoft Project Online / Project ServerIntroduction
Developing for Microsoft Project
Microsoft Project Online \ Project Server
Project Portfolio Management (PPM)Microsoft Project Online \ Project Server takes the functionality of Microsoft Project on the Desktop and add features such as prioritize project portfolio investments, resource capacity and demand and time tacking.
Parallel FunctionalityMicrosoft Project Server 2013 is a on-premises solution that is deployed within an organization’s own environment.
Microsoft Project Online is a flexible cloud solution that reduces much of a effort required to deploy and maintain the PPM environment.
Opportunities
2%-
5%IT Budget Savings
+32%Schedule Performance
+22%Time to Market
+37%Strategic Alignment
43%Cost Overruns
68%Challenged or Failed
82%Schedule Overruns
$50BFailed projects in US
Improvements with PPM
The reality of projects
Application Scenarios
Microsoft Project AnywhereSensei Task Master
Visibility and InsightSensei Portfolio Dashboard
Project MaintenanceSensei Bulk Update
Interfacing with Project
JSOMJavaScript Object ModelJavaScript, JQuerySharePoint Hosted SharePoint Add-ins
CSOMClient Side Object ModelC#, Visual BasicWindows Applications, Provided Hosted SharePoint Add-ins
Project Owner UpdateCSOM
Daniel MacDonald
Project Owner UpdateJSOM
Daniel MacDonald
Interfacing with Project – Other MethodsOData Web Services Project Server Reporting Service - OData<PWA Web URL>\_api\projectdata\ProjectsEx. https:\\senseiprojectsolutions.sharepoint.com\sites\pwadev\_api\projectdata\Projects
Rest Interface for Project Online<PWA Web URL>\_api\projectservice\ProjectsEx. https:\\senseiprojectsolutions.sharepoint.com\sites\pwadev\_api\projectservice\Projectshttp://<sitecollection>/<site>/_api/ProjectServer/Projects/add(parameters)
Project Server Interface - PSITraditional Method of access Project ServerDoes not support Project Online
OData – Project Reporting Service
Test OData URLs in BrowserGet Projects<PWA Web URL>/_api/projectdata/Projects
Get Resource<PWA Web URL>/_api/projectdata/Resources
Add Options<PWA Web URL>/_api/projectdata/Resources?$select=ResourceId,ResourceName,ResourceEmailAddress&$filter=ResourceIsActive eq true
Sensei Portfolio Dashboard™
Daniel MacDonald
Learning More
ReferencesOffice Dev Center: Main: msdn.microsoft.com/officeApps for Office and SharePoint: msdn.microsoft.com/library/office/fp161507.aspxProject 2013: msdn.microsoft.com/library/office/fp161358.aspx
MSDN Forums: Apps for Office and SharePoint: blogs.msdn.com/b/officeappsProject Customization and Programming: social.msdn.microsoft.com/Forums/office/en-US/home?forum=project2010custprog
MSDN Blogs:Getting started with app development: blogs.office.com/2013/08/08/getting-started-with-app-development
Microsoft Virtual Academy:Courses, Live Events: microsoftvirtualacademy.com
Related SessionsFND2202 Keynote: Office Development matters, and here’s why
BRK3157 Light up mobile apps with Office 365 APIs
BRK3199 Supercharging your custom solutions with the Office 365 unified API endpoint
Questions?
Visit Myignite at http://myignite.microsoft.com or download and use the Ignite Mobile App with the QR code above.
Please evaluate this sessionYour feedback is important to us!
© 2015 Microsoft Corporation. All rights reserved.