2. BlueMetal Architects
We are experts at building solutions that exactly meet the
needs of our customers by apply the right people, processes
and platforms.
Our focus is on modernizing applications through expertise in
Creative, Social, Development and Data.
We have offices in Boston, New York, and Chicago.
Bob German
SharePoint Practice Director and Principal Architect
at BlueMetal Architects
Developer and architect on the SharePoint platform
since it was called “Site Server 3.0”
Co-author of SharePoint 2010 Development with
Silverlight for Addison-Wesley
http://blogs.msdn.com/BobGerman
About the Speaker @Bob1German
3. Business Users Power Users / Analysts Developers
Business Technical Business Technical Business Technical
SharePoint People @Bob1German
4. How can we develop SharePoint solutions which
Design for Empowerment
empower business users to:
Maintain and update the solution
Change the solution to accommodate new business needs
Innovate
Empowering the Power Users
@Bob1German
6. How can we add degrees of freedom
to these solutions?
Agenda @Bob1German
7. Business Agility
Business processes
Products and services
Scale
Markets
Organizational Agility
Can other orgs use something similar?
How would a reorg affect the solution?
Technical Agility
How will this work in the next version of SharePoint?
How will this work in the next generation of client technology?
Low-hanging Fruit
Sometimes it’s just as easy to build something flexible…
A Question of Agility @Bob1German
8. Web Parts empower business users to build their own pages and
mash-ups but…
Sometimes there isn’t a web part to do something
For more degrees of freedom:
Find ways to make the web part general
Allow for flexible editing
Build a connectable web part that can be configured in a flexible way
Approach 2007 2010 2013 Beyond
Configurable Yes Yes Yes Almost
Web Part Certainly
Connected Web Yes Yes Yes Probably
Part
Web Parts @Bob1German
9. Client wanted a web part that shows users the weather
forecast for their location based on user profile
Client liked Accuweather widget but it isn’t integrated
with SharePoint
Wanted the user’s zip code to drive the display
Scenario 1 – Weather Web
@Bob1German
10. Client wanted a user directory web part to put on a
departmental web page
Scenario 2 – @Bob1GermanDirectory
User
11. Client wanted a collaborative “dashboard” showing
all aspects of a property under
management
Scenario 3 – Collaborative
Dashboard @Bob1German
12. 1. Allow editing of HTML and other visual settings
2. Think of similar / related use cases
3. For complex configurations, consider using the web part
itself as an editing surface
4. Consider breaking up special-purpose web parts into
connected general-purpose web parts
Web Parts
5. Consider developing on the client side!
It’s the wave of the future – one of the primary methods for building
SharePoint 2013 apps
It can lead to very responsive user experiences
Best Practices @Bob1German
13. InfoPath forms empower business users to create and manage the
forms but…
Sometimes you hit a brick wall when InfoPath can’t do something
For more degrees of freedom:
Create a sandboxed InfoPath solution – users can still edit and update the form
Create a web service that InfoPath can call
Approach 2007 2010 2013 Beyond
Sandboxed No Yes Yes Maybe
InfoPath Solution
Admin Approved Yes Yes Yes Maybe
InfoPath Solution
Custom Web Yes Yes Yes Probably
Service
InfoPath Form @Bob1German
14. Complex approval process
Approvers are selected from
Active Directory groups in the form
InfoPath does not have a way
to enumerate an AD group
SOLUTION: Custom Web Service
Set up as a secondary data source in InfoPath
Configure using InfoPath Rules
Form can still be edited by power users; web service is reusable in other forms
Scenario 1 – Look up Group Members
@Bob1German
15. Repeating field in InfoPath – need to use it in a workflow
OOB options are – first, last, comma-separated
We needed maximum function
SOLUTION: Sandboxed Form Code
Could have used a custom workflow action to extract, but wanted to adapt the
form as well
Users can still edit other form detail; no need for admin to install in Central Admin
Scenario 2 – Repeating Field
@Bob1German
16. Form for use in a marketing request
Needed to allow users to select documents based on a
wildcard, such as M*.pptx
No support from IT – deploying a web service not possible
SOLUTION: Sandboxed Form Code
Uses SharePoint object model to query the document library
Business users can edit and install the solution
Scenario 3 – Wildcard Lookup
@Bob1German
18. Sandboxed Web
Desired Characteristic Farm Code
Code Service
Business User Installable
Business Users can Edit the Form
Extending InfoPath
Reusable in multiple forms
Can access data beyond site collection
Most likely to be reusable beyond
SharePoint 2013
Decision Matrix @Bob1German
19. Business users can edit workflows as needs change over
time, but…
Sometimes you hit a brick wall when the built-in or SharePoint
Designer workflows don’t do something
For more degrees of freedom:
Create a custom action for SharePoint Designer
Create an event receiver that acts on an “Approval”
Approach 2007 2010 2013 Beyond
Custom Workflow No Yes Yes Maybe
Action (Sandboxed)
Custom Workflow Yes Yes Yes Maybe
Action (Farm)
Approval Event Yes Yes Yes Probably
Handler
Workflows @Bob1German
20. Workflow needs to strip attachments out of a form
SOLUTION: Custom Workflow Action – Sandboxed
Solution
Reusable anywhere
All other logic can be handled in SharePoint Designer
Scenario 1 – Custom Form Processing
@Bob1German
21. Workflow needs to update a line of business system
following an approval
Authorized users should be able to reconfigure the approval
process
Unauthorized users should not be able to bypass the
approval
SOLUTION: Event Handler as a Farm Solution
Use OOB Approval form – site collection admins can reconfigure easily
Event handler checks to ensure it’s running on the correct form and library
Scenario 2 – Update LOB System
@Bob1German
22. Users fill in a form and to get a SharePoint site
Uses specific site templates based on user input
Custom approval logic for deciding if the site should be
created
SOLUTION: Custom Workflow Action – Sandboxed
Solution
Whole workflow, approval, template selection set up in SharePoint Designer
Flexible action creates the site
Scenario 3 – Site Provisioning
@Bob1German
24. 1. In general, custom actions for SharePoint Designer (or a
3rd party workflow) is most flexible
2. To allow use of OOB Approval workflow without
SharePoint Designer, add an event handler that checks for
item approved
Extending Workflows
3. For farm-level solutions, deploy to the bin in selected web
apps (to avoid use elsewhere on the farm)
4. Build business rule checks into sensitive workflow actions
5. Return error flag and message to allow the workflow to
handle exceptions
Best Practices @Bob1German
25. Always consider degrees of freedom before
starting a development project
- What parts of the business process are likely to change?
- What skills to users have?
- What permissions do users have?
Choose your technologies wisely
- To future-proof your solution, pretend you’re running in Office 365
- Sandboxed solutions will probably go away
- Farm solutions might or might not be restricted in the future
Business Power Users are the SharePoint
Heroes!
Summary @Bob1German
26. Remember – bit.ly links are case sensitive!
Connecting Web Parts (end user) http://bit.ly/SPT-ConnectWP-User
Connectable Web Parts (developer) http://bit.ly/SPT-ConnectWP-Dev
Client Side Connection Sample http://bit.ly/SPT-Book (Chapter 7)
Sample InfoPath Solutions with http://bit.ly/SPT-InfoPathSamples
Sandboxed Code
Debug InfoPath Forms with Sandboxed http://bit.ly/SPT-InfoPathDebug
Code
Create custom workflow actions http://bit.ly/SPT-WorkflowSandboxed
(sandboxed)
Create custom workflow actions http://bit.ly/SPT-WorkflowFarm
(farm)
Resources @Bob1German