Featured

The ROI of the consumerization of IT
Avoid the Business Requirements Disconnect – Tactics for the CIO
A Static State: SharePoint 2010 Architecture and Design Models
SharePoint 2010 Application Lifecycle Management

The ROI of the consumerization of IT

0
by on April 20, 2012 at 6:25 am

 

Embracing the Consumerization of IT (COIT) has the potential to disruptively alter your business and its position in the competitive landscape. Learn more about COIT and the considerations for adoption when determining if this shift can generate a positive return on investment for your business.

Executive Summary

There are clouds gathering on the horizon and the storm is headed in your direction. The accelerating and relentless Consumerization of IT (COIT) is heralding a disruptive change in the way organizations connect with and support customers, employees, partners and suppliers. COIT refers to the influx of consumer technologies into the enterprise such as mobile devices, social networks and cloud computing.

We observe that the COIT is causing a paradigm shift in the relationship between the business and IT. Our research shows that there is an increasing amount of pressure from the business to support the COIT and those business leaders are realistic about the inevitability of these trends. An Avanade study reports that 73% of C-level executives identify COIT as a top priority in their organization

The question business and IT leaders must ask and answer is whether there is the potential for a return on investment. We believe that while there is an inexorable march towards COIT, determining what it means to your business is crucial for making the right decisions. This is an opportunity for business and IT leaders to redefine their relationships, core competencies and to deliver better products and services to your customers.

Consumerization of IT: Introduction

Mobile devices have become ubiquitous and the convergence of personal and work computing is now upon us. The pace at which this change is occurring was unexpected and companies that embrace and exploit this change will undoubtedly be in a better position relative to their competitors. This is the result of increased agility and productivity with a corresponding decrease in costs. Somewhat surprisingly, research shows that most organizations are embracing this change despite its disruptive nature. There is a sense of inevitability as well as great opportunity.

Social networking is another key driver towards COIT. Employees are increasingly likely to leverage connections from both personal and enterprise platforms in order to make customer, employee and supplier communication more effective and timely. Employees will no longer resort to wandering the halls and riding the elevators to find the resource that can provide them with the answer they need to solve a particular problem. They will reach out through their social networks, inside or outside the firewall, to access the information they need regardless of company policy.

Cloud computing has revolutionized the way software and services are delivered to both consumers and the enterprise and is a critical pillar of IT’s consumerization. Business units of all sizes now purchase and access services on demand, often without the approval or knowledge of the IT department. Previously a business unit would have made a request to the IT department for new or changed software and waited an interminable period while navigating the maze of approvals, requirements, implementation, testing and chargebacks. Now, armed with nothing more than a credit card, an employee can purchase the service from a cloud provider for a fraction of the cost of the traditional way.

More importantly however, the Consumerization of IT is about a shifting mindset. It is a shift away from the traditional models where IT leads the technology charge to one where end users play an increasingly important role in shaping the technology landscape. It refers to a paradigm where users have a world of technology available to them at their fingertips and a willingness to use that technology in new and innovative ways – with or without approval.

Roughly every decade there is a transformative change in the technology landscape that ushers in new opportunities and challenges. Ten years ago the web enabled incredible changes to the way information was accessed and solutions were developed. The web brought with it significant challenges related to security, compatibility and the integration of legacy systems. Those that rose the challenge thrived while those that did not fell by the wayside. A decade from now we will look at the COIT in the same way.

Consumerization of IT: Opportunities

The COIT presents a series of opportunities for business to become more agile, supported by an increasingly connected and productive workforce. There are multi-faceted opportunities for cost reductions from a business and technology perspective. A secure, integrated and service-oriented technology foundation can provide increase agility while simultaneously supporting increased technical heterogeneity.

Broadly speaking, the business opportunities are illustrated in Table 1:

Table 1

Opportunity

Details

Increased business agility

· Broad and quickly growing array of simple, specialized software

· Decreased implementation time for cloud solutions vs. on premises

· Integrated data allows for the more rapid development and deployment of value-added business solutions.

· Rapidly scale up and down as demand dictates

Increased productivity

· Employees able to work from anywhere at any time

· Increasing channels to connect with customers, partners, suppliers and fellow employees

· Increased morale and satisfaction

Cost Reduction

· Shifting the cost burden for mobile devices from employer to employee

· Reduced travel expenses

· Cost reduction for cloud solutions vs. traditional enterprise packages

· Increasingly mobile workforce can result in decreased operational expenses such as office space and communications infrastructure

Redefining IT

· A redefinition of the role of IT

· A sharper focus on the services and capabilities IT delivers

· A move from services from behind the firewall to the cloud

· Moving towards a service-oriented architecture paradigm

Consumerization of IT: Costs

Clearly the Consumerization of IT is not a change that will drive improved business performance at little to no cost. There are serious challenges and associated costs that need to be identified and overcome in order to successfully adapt to these changes. The costs from an IT perspective are outlined in Table 2:

Table 2

Cost

Details

Technology

· Virtualization technologies to provide secure access to enterprise systems

· Architecting solutions to focus more strategically on service orientation

· Implementation of mobile device management (MDM) solutions

Security

· More complex security infrastructure required

· Ongoing risk assessment & evaluation of new devices

· Increased emphasis on data security

Management

· More diverse technical landscape to support

· Creation of data governance frameworks

· Development & implementation of policies and processes

Licensing

· Potential for increased costs for per-device licensing

Consumerization of IT: Factors in Determining ROI

We articulated in Tables 1 and 2 that there are benefits and costs associated with the Consumerization of IT which leads the challenge of determining the ROI. Admittedly, the ROI of COIT is still not fully understood but the following section will provide guidance on the areas that you can measure to make an accurate determination of ROI. The following list describes these areas with some relevant metrics. This list is not intended to be exhaustive but rather to provide sample metrics that can form the basis of determining the ROI for your organization:

1. Business Agility – refers to the ability of a business to adapt rapidly and cost effectively to changes in the business environment. How effective your business is at identifying and seizing new opportunities will determine your success in the marketplace. Understanding your current capabilities from both an execution and cost perspective will allow you to objectively measure improvements gained by embracing the COIT as a business strategy.

a. Profitability

b. Time to Market

c. Product Development Costs

d. Cost of Change

2. Customer Satisfaction – the COIT provides myriad opportunities to leverage new channels for connecting with customers including the web, mobile, social networks and the cloud. A well-executed CRM strategy that leverages these advances will result in increased levels of customer satisfaction and retention thereby driving increased business. Diligently measuring customer satisfaction will provide valuable insight into the effectives of your strategies.

a. Customer Retention Rate

b. Customer Complaints

c. Complaint Resolution Time

d. Revenue per Customer

3. Employee Productivity – can be measured in the quality and timeliness of employee outputs. Effectively understanding employee productivity is an important goal for organizations as it will allow them to better determine the level of business value being created. The COIT has the potential to increase employee productivity by allowing employees to be connected to the right data and people anywhere and at any time. Devising effective metrics to track employee productivity is essential for determining the effectives of your COIT strategy.

a. Units of work produced in a given time period

b. Quality of work

c. Utilization

d. Availability

e. Employee morale/satisfaction

4. Technology Costs – Information Technology is a very capital intensive part of your business. The opportunity for savings here are twofold. Shifting the cost of mobile devices from the employer to employee is an opportunity to reduce costs. Using the cloud to deliver business solutions can lead to cost reductions and also increase the business value generated by IT by focusing on a more clearly defined set of competencies. Identifying where the IT budget is spent and strategically reorienting that spending towards supporting business priorities such as COIT will yield improved IT value to the business. It is important to note that while overall technology costs may not be reduced they will be more effectively targeted.

a. Infrastructure/Hardware Costs

b. Licensing Costs

c. Governance Costs

d. Mobility Costs

e. Time to Market

f. New development vs. maintenance effort

The combination of these metrics into a performance scorecard will enable you to accurately understand the ROI of COIT for your organization. When you undertake pilot project(s) you will be in a position to objectively assess the results of your efforts.

Recommendations

1. Embrace the change. This change is inevitable and is already well underway. The costs and effort involved with attempting to put halt its momentum would be better focused on how to manage and take advantage of these new models. Employees that are always connected and embracing the newest technologies can drive increased productivity and better business results.

2. Start Small, Assess and Expand. Do not panic and initiate a wholesale restructuring of your organization. Identify your current pain points and select pilot projects that you can manage, measure and implement. Take a holistic view of these segments of the enterprise from a business, strategy and technology perspectives and chart a path forward with COIT in mind. This may involve a strategic review of a particular business unit and the relevant business processes. Identify communication channels and identify opportunities for improvement. Examine the underlying technology from the perspective of the cloud, service orientation, security, data and mobile connectivity.

3. Redefine the role of IT. IT departments are no longer the sole decision makers when it comes to technology in an organization. Users are adopting new technologies and circumventing IT departments at an increasing rate. This presents IT departments with an opportunity to evolve their core mission and services. Shifting the focus from monolithic systems to service-oriented architectures and seamless integration between both on premises and cloud offerings will create significant business value.

4. Focus on data, not devices. Devices will clearly continue to change rapidly. Focusing exclusively on the assessment and approval of mobile devices is a Sisyphean task. Ensuring that data is secure, available and integrated is the more important challenge to be undertaken. Identifying key information and classifying it in the context of business criticality and security is the first step in the process in determining which devices to support.

5. Create a mobile strategy. It’s critical to recognize that a clearly defined mobile strategy can help drive business growth. You must identify how your business reaches customers, connects with partners and suppliers and enables employees. The results will form the basis of how your business does everything from marketing and customer support to determining how and what software is purchased or built. Data that once resided solely behind the firewall must now also be securely available on mobile devices and in the cloud.

References

Avanade. (n.d.). Global Survey: Dispelling Six Myths of Consumerization of IT. Retrieved from Avanade: http://www.avanade.com/Documents/Resources/consumerization-of-it-executive-summary.pdf

Business Agility. (n.d.). Retrieved from Wikipedia: http://en.wikipedia.org/wiki/Business_agility

CA.com. (n.d.). Retrieved from Consumer Driven IT: Are You Ready?: http://community.ca.com/blogs/cdit/archive/2012/02/24/consumer-driven-it-gets-serious.aspx

Consumerization of IT. (n.d.). Retrieved from Wikipedia: http://en.wikipedia.org/wiki/Consumerization

Dell. (n.d.). CIO Strategies for Consumerization:. Retrieved from Dell: http://marketing.dell.com/Global/FileLib/hp_microsite/dell-consumerization.pdf

Gruman, G. (n.d.). BYOD: You ain’t seen nothing yet. Retrieved from Infoworld: http://www.infoworld.com/t/byod/byod-you-aint-seen-nothing-yet-182028?page=0,0

Hinchcliffe, D. (n.d.). Consumerization of tech: the new enterprise disruptor. Retrieved from ZDNet: http://www.zdnet.com/blog/hinchcliffe/consumerization-of-tech-the-new-enterprise-disruptor/1978?tag=search-results-rivers;item2

Microsoft. (n.d.). The Consumerization of IT Within Microsoft from the CIO’s Perspective. Retrieved from Microsoft: http://technet.microsoft.com/en-us/library/hh867769.aspx

Mobile Device Managment. (n.d.). Retrieved from Wikipedia: http://en.wikipedia.org/wiki/Mobile_device_management

Schadler, T. (n.d.). How consumerization drives innovation. Retrieved from ZDNet: http://www.zdnet.com/blog/forrester/how-consumerization-drives-innovation/670

Scott, T. (n.d.). Balancing Productivity and Risk is Key to Consumerization of IT. Retrieved from Microsoft: http://blogs.msdn.com/b/mscio/archive/2011/08/30/balancing-productivity-and-risk-is-key-to-consumerization-of-it.aspx

Unisys. (n.d.). Unisys. Retrieved from 2011 Consumerization of IT Study: Closing the “Consumerization Gap”: http://www.unisys.com/unisys/common/download.jsp?d_id=1120000970016710178&backurl=/unisys/ri/report/detail.jsp&id=1120000970016710178

VN:F [1.9.17_1161]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.17_1161]
Rating: +1 (from 1 vote)

Popularity: 3% [?]

Avoid the Business Requirements Disconnect – Tactics for the CIO

0
by on April 20, 2012 at 6:19 am

IT projects are notorious for missed deadlines, rework and cost overruns. On top of that they also often fail to deliver business value due to a disconnect between the business requirements and the technology solutions. Resolving these issues requires changes to how projects are selected, requirements are managed and how the business and IT departments interact with one another.

Executive Summary

IT departments have long been maligned for their perceived inability to deliver technical solutions that meet business requirements in a cost effective and timely manner. This results in a number of consequences for both the business and IT. Precious funds are spent on technology solutions that fail to deliver the required value. Point solutions proliferate causing a brittle and overly complex technical environment that leads to increased costs and reduced business agility. The ability of IT departments to take on new work is hamstrung by the ever increasing maintenance effort to support existing systems. The reputation of IT as a trusted partner is eroded which can lead to shadow IT departments cropping up across the organization, further exacerbating the problem.

A staggering number of projects fail due to inadequate requirements development and management. These failures can manifest themselves through missed deadlines, cost overruns, poor usability and reduced business value. The project sponsor’s needs and the end users’ needs are often at odds with one another leading to conflicting requirements. The unfortunate result of this requirements disconnect is rework which is astronomically more expensive than delivering the right solution in the first place.

Requirements come in many different flavours. There are business requirements, functional and non-functional requirements all the way down to detailed technical requirements. These requirements can conflict with one another resulting in dissatisfied end users or unhappy technical staff. The management of requirements is a core competency that IT departments must nurture through a combination of people, processes and communication.

All is not lost. There are many strategic initiatives that can be undertaken to address this problem. These include IT governance, enterprise architecture and organizational changes that will place an increased emphasis on aligning IT investments with business priorities. These initiatives span the organization, take significant time and effort and require substantial buy-in to initiate and maintain.

This research note, however, is focused on providing tactical solutions for the CIO. There are numerous activities you can begin now to seize the initiative and begin closing the requirements gap. In particular, this paper focuses on the following tactical initiatives you can undertake to bridge the requirements gap:

· Manage client requirements through a structured process

· Develop a Business Analysis Capability

· Use Enterprise Architecture Modelling Tools

· Place an increased focus on User Experience

Structured Agility

In many organizations end users have multiple channels to request work from the IT department. They may deal with the service desk, business analysts, software developers, multimedia resources and more. When the process is not clearly defined it often results in your users finding the simplest way possible to get what they want. They are unlikely to sit through a series of meetings with a business analyst or create a formal change request when they can call a software developer directly to request a change. It appears to the end user that they are getting exceptional customer service but this behaviour, repeated frequently enough, can cause a ripple effect that degrades the overall performance of the entire IT department.

This lack of control can result in a growing requirements gap. Individuals may request changes that meet their specific needs while not considering the requirements of the other stakeholders involved. Technical resources without requisite business knowledge may make incorrect assumptions that lead to expensive rework once the implications are realized.

There needn’t be a single process for requesting work from the IT department however the processes must be published, understood and audited. Clearly, a request for a new business solution won’t follow the same process as a request for a new laptop computer. The processes must direct requests through the appropriate channels in order to deliver the most business value at the lowest possible cost.

Consider the following situation:

A key stakeholder for a particular business system realizes that software changes are made to comply with a new corporate policy relating to records retention. They do not realize that there is a corporate records management solution that has recently been implemented and whose use is being phased in across business units.

Scenario 1

· The stakeholder, eager to be ahead of the curve, calls up the software developer that typically works on their bespoke document management system and with whom they have a relationship.

· The developer, through a series of discussions, determines the requirements and modifies the solution that meets the needs of this particular individual.

· After the work is completed it is realized that there is a corresponding corporate initiative to implement a records management solution and that the work that was done is non-compliant.

· Expensive and time consuming rework is required in order to bring the solution into compliance.

Scenario 2

· The stakeholder discusses the requirements with the business analyst assigned to his or her business unit.

· The business analyst documents the requirements.

· The business analyst discusses the changed requirement with her supervisor who is aware of the corporate policy change and the new records management solution

· An architecture review is conducted to update the requirements model and assess the impact of change. The architecture review will also identify any pre-existing technical inventory that can be used to reduce the integration effort.

· Armed with this information, the developer builds a solution that is compliant with both the new corporate policy, existing architecture principles and the technical requirements to integrate with the new records management solution.

The second approach balances the many different aspects of requirements through a structured process. The stakeholder’s needs are examined in the context of the overall corporate direction to ensure alignment. They are then examined from an architectural perspective to ensure that architecture requirements are also satisfied. Only after this has taken place will development begin – with a much greater level of certainty about what should be delivered.

The CIO must take an active role in establishing and communicating both the processes and the rationale behind them. There are users that are adept at navigating the current lack of process to their advantage who will be unhappy with these changes. The CIO must come armed with data to demonstrate the ineffectiveness of the current state of affairs and be able to articulate why things need to change.

Through the tenacity of the CIO the organization will soon reap the benefits of these changes. IT will be better able to align projects with corporate direction. The relationship between the business units and IT will improve when it is realized that IT is a proactive partner that can help place requests in a broader organizational context. The reduction in rework will enable IT increase its capacity to deliver technical solutions.


Analyze the Business – with the Business

Business analysis is one of the most important professional disciplines that traditionally fall within the IT domain. The Business Analyst is responsible for bridging the gap between the business and IT departments. Effective business analysts have a deep understanding of their customers’ businesses while simultaneously possessing a strong technical background. This allows them to help their customers work through their requirements, document them and translate them into specifications IT can use to build solutions.

Too frequently there is an insufficient emphasis on the role of the Business Analyst and the optimal client relationship model to maximize the opportunities for success. There can also be inefficient internal organizational processes in place to ensure that Business Analysts work effectively with Project Managers and Software Developers. A lack of clarity can lead to redundancy, conflict and confusion which results in suboptimal outcomes for the business. Project Managers are not Business Analysts. Software Developers are not Business Analysts. Table 1 outlines the stark differences in these roles:

Table 1

Business Analyst

Project Manager

Software Developer

Focused on product, process or system

Focused on the big picture

Create technical specifications and designs

Have a deep understanding of their clients’ business

Manage time and budgets

Comply with functional and non-functional specifications

Conduct detailed interviews with clients, channel partners and employees

Manage resource allocation and scheduling

Develop and integrate software solutions

Document requirement, use cases and specifications

Leaders who remove barriers to the successful completion of the effort

Create unit tests, builds and deployment packages

Conduct system testing

   

A lack of understanding of the Business Analyst role, or perhaps having the wrong people in those roles, can lead to a dysfunctional dynamic within the IT department itself. In the absence of clearly defined and communicated roles software developers often see little value in the role of a Business Analyst. They may see them as unnecessary intermediary between their end-users and themselves. They also see Business Analysts as slowing down their progress and adding unnecessary complexity to the software development process.

The most effective Business Analysts possess an excellent knowledge of their customers’ business. They understand the people and processes along with the legal and regulatory requirements. They can speak the language of their customers. Through this knowledge they are more easily able to gain trust and establish relationships. Their understanding of IT allows them to work closely with both their customers and IT in order to ensure that requirements of both groups are as balanced as possible.

Case Study: Business Analyst as Trusted Advisor

A global Tier 1 automotive manufacturer was attempting to implement IT standards across the organization. The company had a decentralized operating structure and was looking to leverage synergies and implement standards as part of an initiative to increase the content per vehicle with the Asian OEMs.

The engineering group was somewhat recalcitrant and had very little trust in the corporate IT department’s ability to understand their business and their requirements. They were not interested in talking to corporate minions who didn’t understand their business. It was clear that something fundamental needed to change.

The Executive Director of IT began the search for a Business Analyst that would be assigned to the engineering group. Instead of searching for a traditional Business Analysts he took a somewhat unorthodox approach. He found a mechanical engineer that had a strong technical background.

The Business Analyst, through his ability to speak the same language as his clients, was able to understand their needs and forge a productive relationship based on trust and a shared understanding. Over time he was able to bring the engineering group into the fold by articulating the need for standards while meeting their needs from a requirements and products perspective.

The CIO must take the lead in defining and promoting the role of the Business Analyst. It’s critical that they meet with their business unit customers to discuss the benefits and implications of having a strong business analyst capability. It is also imperative that the CIO meet with their staff within the IT department to have similar conversations. The earlier in the process concerns can be identified the more easily they can be mitigated.

The CIO must work to develop the customer service framework within the Business Analyst will operate. This will include defining whether a business analyst will assigned to a specific customer or whether they will provide service to multiple customers/business units. This can be a functional of business operational realities, resource constraints or both. They must also implement and communicate the processes that the business analyst will support including (but not limited to); requirements gathering, architecture, change requests, IT service requests.

With a clear definition of the role of Business Analyst the CIO will be able to ensure that IT’s customers are provided with a higher level of service. When the business feels as though they have a trusted partner in IT they will be more amenable to working with IT to define more complete requirements resulting in better solutions. A deeper understanding of the customers’ businesses will help bridge the requirements gap by having an ongoing dialog with the both the business units and IT.

Architecture: Moving from Static to Dynamic

The traditional approach to gathering, documenting and managing requirements is plagued with problems. Meetings are held, documents are created and signed off and promptly left on the shelf to collect dust. As the inevitable changes occur over time these documents are not updated which creates a lack of clarity about the functions a given system is intended to perform. This can lead to confusion, misunderstandings about what was agreed to and negative repercussions for IT.

Architecture comes in many flavours and means different things to different people. You must begin to think of architecture as an ongoing process that is not solely focused on technology. An architecture capability should encompass both the business and technology domains. This will allow you to understand technology decisions in the context of business requirements. Changing requirements will then flow through the architecture process to understand the impact and scope of the change.

Enterprise Architecture is the practice of documenting and analyzing an enterprise from the strategy, business and technology perspectives. This is a strategic initiative that falls outside the rubric of IT although there is a significant opportunity to take aspects of Enterprise Architecture in order to close the requirements gap. Taking these steps will also position IT well when and if an Enterprise Architecture program is kicked off.

In order to properly conduct this documentation and analysis a metamodel is populated that shows the relevant entities and their relationships to one another. Modelling tools are used to populate the metamodel and generate analysis and documentation. The power of these tools is that they provide a mechanism to manage requirements and understand the linkages between other system components. You do not need to initiate a full scale Enterprise Architecture program to take advantage of the benefits that these tools offer. Figure 1 shows a simple example of a metamodel.

Figure 1

clip_image001 (Schafrik)

You must change your perspective from the requirements documents being the primary deliverable from the business analysis phase of a project. Instead, you should think of the requirements documents as being the intermediate step with the population of the model as the goal. When the requirements model is complete you can link those requirements to use cases, business processes, data entities, application services et cetera. This will provide you with traceability through the system so you can clearly demonstrate how each requirement is being met.

EA tools also serve the purpose of generating documentation from the model. These tools can generate a variety of viewpoints that serve to provide stakeholders with the view into the system that they need. The benefit of being able to sit with your end users and demonstrate, in real time, how each of the requirements is being met prior to writing a single line of code will realize themselves in reduced cost and rework and shorter development cycles.

Bridging the requirements gap will require you to rethink not just the process but the tools you use to gather and manage requirements. Changing your paradigm from one of documentation to one of modelling will yield significant advantages through increased traceability, having a system of record for requirements and being able to understand the impact of changes to requirements. When documentation is generated from the model it is current and accurate which will support more effective requirements management.

User Experience: Grey Windows are so 1999

Enterprise software solutions have a long history of being unwieldy and difficult to use on top of not being pleasing to the eye. User experience requirements are traditionally not documented in significant detail which leads to the scenario where the end user is not satisfied but IT can proudly hold up the requirements document with a check mark beside each line item. If the perceived quality of the solution is low then users will be more likely to believe their requirements have not been met. Perceived quality is why auto manufacturers spend a significant amount of time and money ensuring doors close with a solid feel and that the dashboard feels pleasing to the touch.

The key point to recognize is that user experience requirements are equally important as the other, more widely understood types of requirements such as business, functional and non-functional. Identifying and delivering on these requirements will result in increased user satisfaction, productivity and adoption.

Hire a User Experience Designer (UED) to work with your end users to truly understand their requirements and translate them into a simple and compelling experience. Allow software developers to focus on the beauty and elegance of dependency injection and implementing service locator patterns.

The UED should also use a lightweight mock-up tool to iteratively build the user interface specification in a visual format that the end users can understand. These software tools provide the ability to very quickly make changes to the user interface so users can immediately visualize the impact of their decisions. These tools are very inexpensive and easy to use and can result in significantly reduced costs. An experienced UED using a mock-up tool and an iterative design approach can build the user experience specification vastly more quickly and at a much lower cost than a software developer using traditional methods. Figure 2 shows a sample mock-up created by this type of tool.

Figure 2

clip_image003

This approach can help in ways that you may not have considered. It will force your software developers to build higher quality, more loosely coupled software. While the UED develops the user experience your software developers can build the underlying value added business logic. In order to efficiently integrate the two work products software must be developed with this in mind which necessitates the use of design patterns and a loosely-coupled design. This will result in systems that are focused on convention over configuration and can much more easily adapt to change. It will also result in systems that are more compliant with technical requirements thus helping bridge the requirements gap.

Focusing both on modelling and mock-up tools allows you to work on the important concepts independent of the implementation. It allows you to identify problems and work iteratively with your users prior to any code being written. It is much more cost effective to tweak a model or mock-up than it is to rework software code. Doing the leg work up front will can save you considerable time and money down the road.

By placing the right resources and processes in the CIO has a significant influence over the capturing of user experience requirements in an agile and cost effective way. Instead of overlooking the user experience requirements they will be an integral part of the process. Using a rapid, iterative approach the users will be able to more effectively articulate their requirements and see the results of their decisions. Hiring a UED will help those requirements be realized in a manner that creates a better quality user experience.

Dos and Don’ts

DO

DON’T

Define and develop the role of the Business Analyst

Allow software developers or project managers to do double as a Business Analyst

Communicate, communicate, communicate

Assume that the motivations and benefits behind these initiatives will be obvious to your customers.

Use modelling tools to help manage requirements

Rely on static documents and diagrams to manage requirements over time

Analyze and document user experience requirements

Think of the user experience as an afterthought

Use lightweight mock-up tools to prototype the user experience

Invest significant time and effort using traditional software development tools to prototype the user experience

References

Brandenburg, L. (n.d.). I’m a software developer, why is this business analyst on my project? Retrieved from Bridging the Gap: http://www.bridging-the-gap.com/im-a-software-developer-why-is-this-business-analyst-on-my-project/

Business Analyst. (n.d.). Retrieved from Wikipedia: http://en.wikipedia.org/wiki/Business_analyst

Malik, N. (n.d.). Understanding the root causes of poor software requirements. Retrieved from Inside Archtecture: http://blogs.msdn.com/b/nickmalik/archive/2009/02/18/understanding-the-root-causes-of-poor-software-requirements.aspx

Model Driven Architecture. (n.d.). Retrieved from Wikipedia: http://en.wikipedia.org/wiki/Model-driven_architecture

Schafrik, F. (n.d.). A practical guide to developing enterprise architecture. Retrieved from IBM Developer Works: http://www.ibm.com/developerworks/rational/library/enterprise-architecture-maximum-value/index.html?cmp=dw&cpb=dw&ct=dwcon&cr=devx&ccy=zz

VN:F [1.9.17_1161]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.17_1161]
Rating: +1 (from 1 vote)

Popularity: 2% [?]

in Case Study, IT

A Static State: SharePoint 2010 Architecture and Design Models

0
by on February 3, 2012 at 7:42 am

Excellent series of resources on SharePoint Design Models:

A Static State: SharePoint 2010 Architecture and Design Models.

VN:F [1.9.17_1161]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.17_1161]
Rating: 0 (from 0 votes)

Popularity: 3% [?]

in SharePoint

SharePoint 2010 Application Lifecycle Management

0
by on February 3, 2012 at 6:53 am


 

  1. Application Lifecycle Management Overview

 

Application Lifecycle Management (ALM) is the coordination of all aspects of software engineering — including the formulation and communication of business and technical requirements, code design and architecture, project tracking, change management, coding, testing, debugging, and release management — by using tools that facilitate and track collaboration among and within work teams.

SharePoint 2010 offers significant enhancements to in the ALM space through the use of feature versioning, a more robust feature schema, the ability to push down upgrades to existing feature instances and

Visual Studio 2010 natively understands SharePoint development and thus provides a significantly improved toolset for the development of applications for SharePoint. Projects are compiled into a Windows SharePoint Package (WSP) file that can then be deployed in a repeatable manner through the various environments. Many aspects of the creation of these features is handled by Visual Studio thereby increasing the productivity of the developers.

  1. Provisioning with Solution/Feature XML versus Code

 

SharePoint applications and customizations are typically built and deployed using the Feature Framework. This enables repeatable deployments from one environment to another and allows modules of functionality to be deployed to different scopes within SharePoint (provisioning).

Artifacts in SharePoint are typically divided into 2 main categories

  • Declarative Artifacts — Declarative artifacts are elements that are defined in a physical file somewhere in the SharePoint root. Frequently, these artifacts are used as definitions or templates that are used when new instances of the artifact are provisioned. Examples of declarative artifacts include site definitions, list definitions, and custom actions.

     

  • Provisioned artifacts — Provisioned artifacts are elements that exist inside a Content Database. Typically, they can be created through Feature XML, code, or other means such as the SharePoint UI itself. Examples of provisioned artifacts include content types, list instances, and fields. (O’Brien, Real World SharePoint 2010, 2011)

     

Pros & Cons of Declarative Provisioning with XML

 

Advantages

Disadvantages

Required for some artifacts (for example, site

definition, list template, delegate control, custom

action, custom field control)

Not possible to debug the provisioning process

Little support for upgrade scenarios (for example,

some changes to a content type that is in

use cannot be done with XML)

Provisioning instructions are not in compiled

code, so potentially easier to update

Difficult to control provisioning sequence in

some areas

 

Arguably steeper learning curve than API

 

  1. Upgrading a SharePoint 2010 Application

 

A significant improvement in the SharePoint 2010 ALM is support for feature versioning. This allows for much cleaner upgrade process than WSS 3.0 offered. In order to support this new Feature schema elements have been defined.

Microsoft has added some new XML to the Features framework to support Feature upgrade. When a new version of a Feature is created, this may involve:

  • Incrementing the version number of an existing Feature (this is mandatory for Feature upgrade to happen)
  • Adding some new XML to define new items for the Feature
  • Writing some code to execute in the new FeatureUpgrading event in the Feature receiver
  • All of the above

 

Feature upgrade is useful in the following scenarios:

  • To make changes to existing site collections or sites, or something inside – for example:
    • Making changes to existing items e.g. adding a new column to a content type/list
    • Adding new elements to existing sites e.g. a new list
    • Any change which involves doing something to a site using the API e.g. using code to modify the navigation settings for many sites
  • To add new functionality into an existing Feature, rather than create a new one – perhaps because that’s the most logical factoring
  • Where some functionality will be upgraded several times during its lifecycle, possibly in a situation where the changes are not rolled out to every site, or are rolled out at different times (O’Brien, Feature Upgrade Fundamentals)

 

The following table details the schema enhancements along with a description

XML Element

Description

UpgradeActions

Parent element for defining provisioning upgrade steps. All subsequent

XML elements in this table are children of UpgradeActions.

VersionRange

Defines the range of existing Feature versions to upgrade with the steps defined within this element. This has BeginVersion and EndVersion attributes. Enables a Feature to be repeatedly upgraded through its lifecycle.

ApplyElementManifests

Allows new Feature elements to be added to an existing Feature. Items declared in the referenced element manifest files will be provisioned on upgrade.

AddContentTypeField

Provides a declarative shortcut for the common task of adding a field to an existing content type.

CustomUpgradeAction

Provides a means of allowing custom code to execute during Feature upgrade. This allows the developer to handle advanced scenarios that cannot be dealt with by declarative XML alone.

 

A sample of this new schema can be found below:

<?xml
version=”1.0″
encoding=”utf-8″ ?>

<Feature
xmlns=”http://schemas.microsoft.com/sharepoint/”
Version=”1.0.0.0″>


<UpgradeActions>


<VersionRange
BeginVersion=”0.0.0.0″
EndVersion=”0.9.9.9″>


<ApplyElementManifests>


<ElementManifest
Location=”SomeFunctionality_Iteration2\Elements.xml”
/>


</ApplyElementManifests>

 


<AddContentTypeField
ContentTypeId=”0x010073f25e2ac37846bb8e884770fb7307c7″


FieldId=”{536DC46C-DC26-4DB0-A97C-7C21E4362A85}”
PushDown=”TRUE”/>


<AddContentTypeField
ContentTypeId=”0x010073f25e2ac37846bb8e884770fb7307c7″


FieldId=”{4E7A6719-011A-47EA-B983-A4941D688CA6}”
PushDown=”TRUE”/>

 
 


<CustomUpgradeAction
Name=”UpdateSomething”>


<Parameters>


<Parameter
Name=”PassSomeValue”>This is a string</Parameter>


</Parameters>


</CustomUpgradeAction>


</VersionRange>

</Feature>

 

The following code will handle the FeatureUpgrading event and the handling of parameters defined in the Feature.xml file above.

<code><span style="color:blue; font-size:8pt; background-color:#f4f4f4">public<span style="color:black">
						<span style="color:blue">override<span style="color:black">
								<span style="color:blue">void<span style="color:black"> FeatureUpgrading(SPFeatureReceiverProperties properties, <span style="color:blue">string<span style="color:black"> upgradeActionName, System.Collections.Generic.IDictionary<<span style="color:blue">string<span style="color:black">, <span style="color:blue">string<span style="color:black">> parameters)
</span></span></span></span></span></span></span></span></span></span></span></span></code>

<code><span style="color:black; font-size:8pt">{
</span></code>

<code><span style="color:black; font-size:8pt; background-color:#f4f4f4">    SPWeb parentWeb = (SPWeb)properties.Feature.Parent;
</span></code>

 
 

<code><span style="color:black; font-size:8pt; background-color:#f4f4f4">
					<span style="color:blue">switch<span style="color:black"> (upgradeActionName)
</span></span></span></code>

<code><span style="color:black; font-size:8pt">    {
</span></code>

<code><span style="color:black; font-size:8pt; background-color:#f4f4f4">
					<span style="color:blue">case<span style="color:black">
							<span style="color:#006080">"UpdateSomething"<span style="color:black">:
</span></span></span></span></span></code>

<code><span style="color:black; font-size:8pt">
					<span style="color:blue">string<span style="color:black"> someValue = parameters[<span style="color:#006080">"PassSomeValue"<span style="color:black">];
</span></span></span></span></span></code>

<code><span style="color:black; font-size:8pt; background-color:#f4f4f4">
					<span style="color:green">// do some stuff.. <span style="color:black">
						</span></span></span></code>

<code><span style="color:black; font-size:8pt">
					<span style="color:blue">break<span style="color:black">;
</span></span></span></code>

<code><span style="color:black; font-size:8pt; background-color:#f4f4f4">
					<span style="color:blue">default<span style="color:black">:
</span></span></span></code>

<code><span style="color:black; font-size:8pt">
					<span style="color:blue">break<span style="color:black">;
</span></span></span></code>

<code><span style="color:black; font-size:8pt; background-color:#f4f4f4">    }
</span></code>

<code><span style="color:black; font-size:8pt">}
</span></code>

  1. Upgrading SharePoint 2010 Features – Walkthrough

This section describes at a high level how you can put these feature-versioning and upgrading capabilities to work. When you create a new version of a feature that is already deployed on a large SharePoint 2010 farm, you must consider two different scenarios: what happens when the feature is activated on a new site and what happens on sites where the feature already exists. When you add new content to the feature, you must first update all of the existing definitions and include instructions for upgrading the feature where it is already deployed.

For example, perhaps you have developed a content type to which you must add a custom site column named City. You do this in the following way:

  1. Add a new element file to the feature. This element file defines the new site column and modifies the Feature.xml file to include the element file.
  2. Update the existing definition of the content type in the existing feature element file. This update will apply to all sites where the feature is newly deployed and activated.
  3. Define the required upgrade actions for the existing sites. In this case, you must ensure that the newly added element file for the additional site column is deployed and that the new site column is associated with the existing content types. To achieve these two objectives, you add the ApplyFeatureManifests and the AddContentTypeField upgrade actions to your Feature.xml file.

When you deploy the new version of the feature to existing sites and upgrade it, the upgrade actions are applied to sites one by one. If you have defined custom upgrade actions, the FeatureUpgrading method will be called as many times as there are instances of the feature activated in your site collection or farm. (Juvonen, 2011)

Consider the following scenario as well:


  • A Web-scoped CustomFeature.wsp v1.0.0.0 is deployed and activated on Site Collection containing Site A and Site B. An instance of the feature is created on Site A
  • New functionality is required and CustomFeature.wsp v2.0.0.0 is created and deployed. A new instance is created on Site B resulting in v2.0.0.0 being instantiated. However the previous instance in Site A is still at v1.0.0.0
  • You must explicitly upgrade existing instances of the feature using the SharePoint Feature Upgrade Kit and/or the associated PowerShell cmdlets.
  • In a scenario like this you must ensure to handle both the new activation and feature upgrade process. This is discussed elsewhere in this document.
  1. Important Points

  • Feature upgrade does NOT happen automatically (including when the Feature is deactivated/reactivated)!  The standardized Central Admin and/or associated PowerShell cmdlets must be used to upgrade existing instances
  • On the VersionRange element, BeginVersion is inclusive but EndVersion is not. In other words, a Feature instance will be upgraded if the current version number is equal to or greater than BeginVersion , and less than  EndVersion.
  • Upgrade instructions are executed in the order they are defined in the file.
  • If a Feature does not have a Version attribute, the version is 0.0.0.0.
  • Enabling logging can help diagnose any issues. In the ULS settings, under the ‘SharePoint Foundation’ category, set the following sub-categories to Verbose to see more info:
    • Feature Infrastructure
    • Fields
    • General (O’Brien, Feature Upgrade Fundamentals)

 

Features are upgraded in the following order: first at the server farm level, next at the Web application level, then site collection, and finally, at specific Web sites. At the Web site level, Feature instances are upgraded starting with root Web sites and progressing downward through the hierarchy of child Web sites. Features are upgraded based on the order of dependency, that is, dependent Features are upgraded after the Features that they depend upon.

 

  1. SharePoint 2010 ALM Standards

    1. Solution Packaging Standards

 

  • Feature packaging model will be designed as early in the project as possible
  • Features targeting different scopes must be developed in separate solution packages necessitating a separate Visual Studio Package
  • Feature packaging decisions will be made on a per project basis but will consider the following factors
    • How functionality is related to each other. Unrelated functionality may be packaged into separate features to provide increased granularity around deployments.
    • Project phasing requirements
  • Activation dependencies should be used to ensure proper deployments

 

  1. Feature and Assembly Versioning Standards

Assembly Versioning Number Standards

Adding some internal code (for example, logging) to a class, with no

change to signature

1.0.0.1

Adding a new member to an existing class

1.0.1.0

Adding a new class to a namespace

1.1.0.0

Removing a class or public/protected class member

2.0.0.0

 

Feature Versioning Standards

Changing a display name of the Feature or an artifact

1.0.0.1

Adding a new artifact to an existing Feature

1.0.1.0

Modifying a template artifact (for example, a list definition)

1.1.0.0

Removing an artifact from a Feature, or any other major change (for

example, one that would cause a dependent Feature to break)

2.0.0.0

 

Some further guidelines on Feature Versioning are below:

 

  • Increase the version number when you update a Feature and, if needed, add corresponding Feature upgrade logic. Even if you do not have to add Feature upgrade logic, you should still increase the version number so there is a way to distinguish what versions of the Feature are deployed across a server farm.
  • Keep version numbers of your Feature independent from Microsoft product versions. For example, instead of starting with 14.0.0.0 as the version number, start with 1.0.0.0 and increment subsequent versions appropriately, for example, 2.0.0.0, 2.1.0.0, and so on.

 

  1. Development Standards

    1. Development Environment Deployments

 

  • New Features: they can be deployed using the Deploy command in Visual Studio. This will perform a Deactivate – Retract – Remove – Add – Deploy Activate Operation
  • Upgrades: versioned upgrades to features should not be deployed in this manner. The solution should be packaged and the appropriate PowerShell commands should be used to upgrade the feature. This will more realistically simulate deployment to other environments.

 

The standard for managing the feature upgrade process will be to use the Open Source SharePoint Feature Upgrade kit available at http://spfeatureupgrade.codeplex.com/. This extends Central Administration to provide this functionality as well as includes PowerShell cmdlets to facilitate the process. More explanation is provided here: http://www.sharepointnutsandbolts.com/search?q=cmdlet

 

  1. Feature Activation

 

Do not instantiate an SPWeb, SPSite, SPList, or SPListItem object within an event receiver. Event receivers that instantiate these objects instead of using the instances passed via the event properties can cause the following issues:

  • Significant additional roundtrips to the database (one write operation can result in up to five additional roundtrips in each event receiver).
  • Calls to the Update method on these instances can cause subsequent Update calls in other registered event receivers to fail.

 

  1. Code Design

 

This section is not intended to be a comprehensive listing of TGT’s software development best practices but rather an outline of SharePoint specific code design standards related to the SharePoint ALM

To provide more flexibility for your code, you should not place your upgrade code directly inside the FeatureUpgrading event receiver. Instead, put the code in some centralized location and refer to it inside the event receiver

 

By placing your upgrade code inside a centralized utility class, you increase both the reusability and the testability of your code, because you can perform the same actions in multiple locations. You should also try to design your custom upgrade actions as generically as possible, using parameters to make them applicable to specific upgrade scenarios. (Juvonen, 2011)

  1. Upgrade Process Standards

 

When a feature has previously been deployed to a non-development environment (SIT, QA, PROD) it must be versioned and upgraded appropriately. The following steps must be followed.

  1. Upgrade the version number of the feature per the standards outlined in section 6.2 of this document.
  2. Make the appropriate changes to the Feature.xml file to deal with any relevant upgrade actions that must occur to move to the next version.
  3. If the feature has the potential to be used in multiple places ensure that scenarios for a new activation as well as an upgrade are handled. This is accomplished by writing any appropriate code in the FeatureUpgrading and FeatureActivating event handlers
  4. Package the WSP
  5. Communicate to the infrastructure team that this is an Upgrade in order to ensure required changes are pushed down to existing instances of the feature if required.

 

 

  1. Bibliography

    Juvonen, V. (2011, February). Application Lifecycle Management in SharePoint 2010. Retrieved from MSDN: http://msdn.microsoft.com/en-us/library/gg604045.aspx

    O’Brien, C. (2011). Real World SharePoint 2010. Indianapolis, Indiana: Wiley Publishing.

    O’Brien, C. (n.d.). Feature Upgrade Fundamentals. Retrieved from Fun and Games with the Nuts and Bolts of SharePoint: http://www.sharepointnutsandbolts.com/2010/06/feature-upgrade-part-1-fundamentals.html

 

 

VN:F [1.9.17_1161]
Rating: 9.5/10 (2 votes cast)
VN:F [1.9.17_1161]
Rating: 0 (from 0 votes)

Popularity: 7% [?]

in IT

Crowdsourcing My Good(?) Idea – I need your help!

2
by on January 24, 2012 at 10:19 am

If I have one passion in this world it’s kids. Well, libertarian philosophy and Austrian Economics are right up there of course but at the end of the day its kids. I suppose the desire to help kids comes from my upbringing as well as some of the events that have transpired during my adult life. I grew up in a home where my mom was always there and my dad was exactly the kind of father 2 boys needed. My parents took in foster kids and while as a child I probably didn’t appreciate the importance of that gesture I certainly do now. My parents have always been the type to help others whether it was bringing a child over from Belarus who had been exposed to radiation from Chernobyl and pretty much feeding their village for 10 years to volunteering at the Food Bank.

I was a Big Brother for a period of time in the mid 90′s which was a rewarding experience however I’m certain I would be far better at it now. My young daughters having gone through the death of their mother and learning to love and think of another woman as their mom has really clarified the importance of parents and a safe and stable home – although stable can be a relative term I guess. That’s enough history for now and on to my idea:

I’m an IT geek who lives in London, Ontario, and was thinking what a valuable experience it would be for underprivileged kids to be able to attend, at no cost, a computer camp for a week or so. The objectives as I see them would be as follows:

  • To have the kids go through an interview process to attend the camp
  • To require a dress code while attending the camp – hopefully some local businesses would donate to those that needed help in this area
  • To teach the kids some software development fundamentals
  • I don’t really want the camp to be about software but I want learning how to program to be the mechanism to achieve:
    • To meet new kids
    • To learn to present in front of others
    • To show them that professional dudes are people like everyone else
    • To understand how business works
    • To appreciate that they can truly make a difference

I’d need to organize the following logistics from what I can see:

  1. Finding a place that would do it for free
  2. Computers
  3. People to help teach
  4. Develop the curriculum
  5. Food?
  6. I’m sure there are a million other things

Clearly this is a very preliminary idea at this point so I thought I would try to leverage the power of Crowdsourcing to help me crystallize this into a truly meaningful experience for some kids that could really use a meaningful experience.

 

Sincerely,

 

Jason MacKenzie

VN:F [1.9.17_1161]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.17_1161]
Rating: +1 (from 1 vote)

Popularity: 6% [?]

in IT

Effectively Governing Sharepoint

0
by on January 21, 2012 at 12:39 pm

Executive Summary

 

The purpose of this document is to describe my view of developing and implementing SharePoint governance. A strong SharePoint governance practice is an important component in using this software platform to deliver real business value. SharePoint governance is also frequently overlooked or poorly implemented resulting in increased risk, complexity and cost while diminishing the benefits to the organization. This document discusses key concepts related to governance but is not in and of itself a governance plan. Governance requirements vary from organization to organization and should be created with a full understanding of the goals, organizational culture, staffing and technology infrastructure of our customers.

SharePoint governance is critical because SharePoint is a business solution supported by IT. The intention of SharePoint, along with any enterprise platform, is for it to be leveraged to allow the organization to more effectively meet business goals. SharePoint governance will help define ownership, roles and responsibilities along with policies and procedures that will create a much better environment for success.

Governance is a broad topic that is divided into numerous categories. The term “governance” refers to the process of decision making and the process by which decisions are implemented. We recognize the critical importance of an integrated corporate governance framework and that SharePoint governance is a subset of that larger initiative. This document will also discusses subjects such as Enterprise Architecture that are not commonly associated with SharePoint governance. We will make the case that these disciplines can enhance the effectiveness of your SharePoint implementation.

SharePoint 2010 is an enterprise collaboration platform that provides the following capabilities: Sites, Communities, Insights, Search, Content and Composites. This diverse array of capabilities provides a wide-spectrum of features that can help organizations realize their strategic business objectives. There is also significant downside risk that mitigated by a well-conceived and executed governance strategy. SharePoint governance can be thought of in the following contexts:

  • IT Assurance
  • Project Governance
  • Information Governance
  • Technology & Business Alignment
  • Continuous Improvement

It is also a beneficial to engage in the creation of a business model for SharePoint prior to moving forward with the implementation. At a generic level a business model describes the rationale of how an organization creates, delivers, and captures value. Your organizations business model is an excellent starting point to map the goals and objectives of your SharePoint implementation to the goals and objectives of the organization.

It is my position that governance, supported by enterprise architecture and the creation and maintenance of a business model(s) will result in more effective decisions being made more quickly allowing your business to respond more quickly to changing market conditions thereby generating more value for your customers, employees and shareholders.

  1. Integrated Governance Framework

 

Governance is a broad term that applies at many different levels of an organization. Corporate governance refers to the set of processes, customs, policies, laws, and institutions affecting the way a corporation (or company) is directed, administered or controlled. An integrated corporate governance framework should consist of capital planning, workforce planning, security, program management and enterprise architecture. This framework should provide the processes and resources to ensure that corporate activities are aligned with achieving the objectives of the corporation.

Information Technology Governance, IT Governance is a subset discipline of Corporate Governance focused on information technology (IT) systems and their performance and risk management. The primary goals of IT Governance are to assure that the investments in IT generate business value, and to mitigate the risks that are associated with IT. IT Governance is not separate from Corporate Governance but rather a complimentary practice that focuses on how Information Technology assets deliver value within the context of the overall Corporate Governance model

Service Governance is the set of processes, procedures, policies and guidelines and tools affecting the way people direct administer or use a specific IT service within an organization. IT Service Governance defines the relationship among how the many players involved with an IT service work together and how the collectively support the vision/goals originally defined for that service.

The goal of discussing the various forms of governance is intended to demonstrate that SharePoint governance cannot be effective in the absence of a broader strategic context. If a corporate governance model has not been created, attempting to implement a SharePoint specific model will be problematic.

Figure 1 – Governance Hierarchy


The following points illustrate some fundamental considerations when devising a governance strategy. Governance activities must be measured for both their effect on business performance and overall compliance. If these activities cannot be measured they should not be governed. If an organization is not willing or able to enforce the policies, processes and expectations required to comply with the governance strategy then they should not be governed. If the activities do not ultimately result in a net benefit to the profitability of the organization they should not be governed and in fact, not carried out at all.

  1. Business Modeling

As previously mentioned a business model refers to the rationale of how an organization creates, delivers, and captures value. A business model can be broken down into blocks that show how a company intends to make money. It is an excellent tool for blueprinting strategy and understanding the potential impact of change.

The blocks that define the business model are: Key Partners, Key Activities, Key Resources, Value Propositions, Customer Relationships, Channels, Customer Segments, Cost Structure and Revenue Streams. These blocks cover the 4 main areas of business: customers, offer, infrastructure and financial viability. (Generation).

It is an important exercise to create a business model for your SharePoint implementation in order to understand how the 9 segments work together to create business value. An excellent business model canvas is available at http://www.businessmodelgeneration.com. An example follows on how to use a business model to visualize the impact of changes. I have significant experience in generating effective and accurate business models.

Scenario

A manufacturing organization has decided to implement SharePoint to achieve the following 3 objectives: Increase collaboration, improve the accuracy of enterprise search, and centralize their IT infrastructure in a Shared Services Model. Let us quickly break down how the 9 building blocks could be populated in this scenario.

Building Blocks
Customer Segments
  • Employees
  • Manufacturing Facilities
  • Executives
Channels
  • Site Owners
  • IT Steering Committee
  • Help Desk
Customer Relationships
  • Communities
  • Joint projects
Value Propositions
  • Deliver business solutions
  • Accurate & Secure Enterprise Search
  • Business Process Reengineering
Key Partners
  • IT Steering Committee
  • 3rd Party Consultants
  • Site Owners
Key Activities
  • Platform management
  • Solution Development
  • Training
Key Resources
  • Technical Infrastructure
  • SharePoint staffing
Cost Structure
  • Technical Infrastructure
  • Software Licensing
  • People (Salaries, Training)
Revenue Streams
  • Shared Services chargeback
  • Internal consulting services

 

The following year the executive, in the quest to increase the level of communication with suppliers, demands that specific information on the portal be made available via an extranet. The business model provides insight into the impact of this change from the perspective of the 9 building blocks. The building blocks are related and changes to one will affect many.

In this scenario, a customer group, Executives has instructed that SharePoint will support a new category of customer, the supplier. This directive adds a new element to our value proposition which is the availability of accurate information for suppliers. This will open a new channel, the supplier portal that we use to interact with our customers. The organization must then ask itself if it has the appropriate staffing in place to support the new customer segment as well as the infrastructure to handle the increased user base extranet availability. This could impact the cost structure associated with the SharePoint business model.

Using the business model canvas will provide an organization to clearly see what the potential impacts of a change to that model are. This process also helps ensure the model is aligned with the overall business model of the organization. It also helps people understand what SharePoint should be used for any why. Different models should be prototyped to help understand how SharePoint can be used the most effectively in an organization. A significant change to one building block can necessitate the creation of a new business model

  1. Enterprise Architecture

    1. EA Overview

Enterprise architecture describes the documentation and analysis of an organization’s current and future states from strategy, business and technology perspectives.   By defining the elements and their relationships that comprise an organization, an organizational ontology, such as strategic objective, organizational unit, business process, application etc. in the form of a metamodel you are able to quickly and accurately analyze gaps between the current and future states, model multiple future scenarios, identify duplicate data, issues of standards non-compliance and more. Enterprise architecture makes the information about an organization actionable and therefore a vital tool for achieving strategic objectives.

Enterprise Architecture is a key component of the integrated governance framework and should be run as a separate program. Enterprise Architecture, while having a significant IT component, should not be owned by the IT organization. Enterprise Architecture plays an informational role in the sense that the impact of change through all levels of the organization can be modeled and assessed. Quickly assessing potentially duplicated information, business processes etc. and developing a transition plan to a future state allows the governing bodies to make timely and accurate decisions on how to move forward.

There are numerous EA frameworks and methodologies in use. These include EA3, TOGAF, DODAF, FEAF and many more. The term framework in the EA framework typically defines what to model (the meta-model) while methodology refers the phases and activities required to gather the required information.

  1. Meta-Models

EA Frameworks typically provide a meta-model (MM) that organizations can use to model their enterprises. An MM is ontology, which is a description of things and their relationships to one another. In practice, populating the content of your MM is how you define your enterprise from the strategy, business and technology perspectives.

Figure X demonstrates a simple example of an MM that demonstrates the relationship between Strategy, Initiative and Business Unit. The MM provides a single definition for each term and defines the relationship between them. A complete MM extends this paradigm to the information and technology layers as well.

Figure 2 – Metamodel Sample


(Mallik, 2011)

Once the MM is populated, various viewpoints can be generated for consumption by the appropriate stakeholders. A C-level executive may be interested in what initiatives are underway to support a specific strategic goal whereas a business unit head might be interested in understanding which business processes his/her unit is responsible for. IT personnel would be interested in knowing what application services support various business processes. These viewpoints are typically published in a tabular format to a web page for easy consumption.

Most modern EA tooling provides an API to populate models from an organization’s system of record using ETL processes. This reduces duplication and the opportunity for errors and allows for the automated population of all or some of the MM. Gartner’s 2010 Assessment of EA tools can be found here.

  1. EA & SharePoint

A mature EA capability will provide an enterprise a robust way to analyze the current and future states of an enterprise. This capability is critical to ensuring the leveraging of software platforms, such as SharePoint, to delivering business value. Some examples follow to illustrate the benefit:

Information Architecture – a mature Enterprise Architecture will have all the information elements, the hierarchy, their definitions, the source of record, business processes they are associated with on so forth. Should a request come in to automate a specific process in SharePoint the Enterprise Architecture team can quickly assess the state of that process and its related entities in the organization. Should the process already exist a determination can be made to either maintain the current state and end the new initiative or move the process into SharePoint by developing a transition plan to move to the future state.

Business Architecture – enterprise architecture provides the mechanism for directly, or indirectly, linking the business-centric components of an organization to the supporting software platforms. Many an organization implementing SharePoint have difficulty demonstrating how the feature set and usage directly contribute to the company’s bottom line. Through the meta-model, EA can link strategy to specific initiatives designed to execute that strategy to business processes to the software platform that automates those processes.

Business Processes – if an upgrade to the next version of SharePoint is planned, the organization will likely want a clear picture of the risk involved. A report on all the business processes currently hosted in SharePoint may be requested to understand the potential risk on the company’s operations. EA provides the ability to quickly determine this along with the related technical infrastructure, the business units that own the process and the project and programs that will be affected.

As these examples illustrate, Enterprise Architecture and by extension, a mature governance framework will provide a mechanism for making sound strategy, business and technology decisions.

  1. SharePoint Governance

This document until this point has been focused on providing the context in which SharePoint governance should function. The ultimate goal of SharePoint governance is to ensure the service meets the business needs of the customers in a secure, manageable, and cost-effective way. Governance is an ongoing process that continually evaluates new requests for the services and balances them against the business needs while strategically looking at the corporation’s longer term objectives. We will now explore the specifics of SharePoint governance including what it is, why you need it and who should be involved.

SharePoint governance can be thought of as covering the following 5 major areas.

  • IT Assurance
    • Disaster recovery, technical infrastructure, operations and SLAs
  • Project Governance
    • Project management, requirements management. Stakeholder management
  • Information Governance
    • focusing on information architecture (security model, taxonomy, navigation, content types, configuration) and information management (compliance, accountability, quality, discoverability, life cycle management)
  • Technology & Business Alignment
    • focusing on adoption, training, application usage, branding, service request process, and strategy
  • Continuous Improvement
    • focusing on return on investment, qualitative and quantitative measurement of defined success goals, and user feedback

(Clay, 2011)

The approval and acceptance of a governance plan is an important deliverable. In order to begin the process of creating the plan the following areas should be considered.

  • Current State Analysis – what are the current requirements and challenges that the service should address?
  • Vision & Objectives for the Service – what features and capabilities will be provided to the organization?
  • OOTB SharePoint Capabilities – what are the standard features and capabilities offered by SharePoint in relation to the vision and objectives?

 

Performing this analysis will act as the inputs to the process of determining what needs to be governed. This may include, but are not limited to:

  • Service Level Agreements
  • Security
  • Cost/Revenue model
  • Quotas
  • Training
  • Change Management
  • Migration Planning

 

Determining the most important aspects of the service to govern will then enable concrete actions to be taken to implement the governance model. These actions may include:

  • Configuring SharePoint to comply with the governance requirements
  • Identifying any supporting utilities and 3rd party tools that are required
  • Development of a training and communication plan
  • Creation of related policies and procedures.

There are many more potential areas to be governed. It’s important to identify the minimum level of governance initially required. This will allow it to be more quickly implemented and understood as the maturity of the service evolves the governance will evolve in tandem.

Some governance processes will be manual and others can be automated through the out of the box feature set of SharePoint 2010. Some of the OOTB features and their relation to the 3 of the 5 major governance areas are listed below. These features, when used can help manage the IT Services being delivered as well as the proper governance of the corporate information stored in SharePoint.

  • IT Assurance
    • Quotas, Features, SharePoint Designer configuration, Sandbox Solutions, Backup & Recovery, Content Storage
  • Information Governance
    • Site locks, Document Management, Content Approval, Versioning, Records management
  • Technology & Business Alignment
    • Site Templates, SharePoint Designer configuration

 

  1. SharePoint Governance Teams

Successful SharePoint governance relies on having the appropriate resources, from various levels of the organizations, focused on the developing and operating the governance directives. These resources should be divided in teams focused on both strategic and tactical activities.

The various roles that comprise SharePoint governance teams may include:

  • Executive stakeholders
  • Business users and power users who are supportive of SharePoint.
  • Systems analysts who are devoted to supporting SharePoint.
  • Developers who create custom functionality.
  • Systems administrators who manage the SharePoint farms.
  • Technical leadership who understand how to translate business requests into SharePoint solutions.

The Strategy team should be comprised of business and technology leaders, financial leaders, information workers as well as security and compliance officers as appropriate. This team’s mission is to ensure that business objectives for SharePoint are being measured and met. They will also provide direction to the various tactical teams in order to ensure the activities being undertaken are appropriate.

Many organizations have an IT Steering Committee (ITSC) that performs a similar function in ensuring that technology investments are aligned with the business’ objectives. The ITSC accomplishes this by establishing executive leadership in the development of standards, policies, and the prioritization of various initiatives. The SharePoint strategy team may be comprised of some of the same members and will perform a similar role albeit focused on the SharePoint platform. Ideally these teams will be separate with clearly defined processes detailing the interaction between them.

The tactical teams focus on the actual implementation and operation of the SharePoint platform. These teams can include Operations, Development and Support. The Operations team is responsible for ensuring the platform is running and meeting SLAs, crafting a disaster recovery strategy, maintenance and monitoring plans and deployments including policies and schedules. The Development team can be comprised of a range of roles from technically adept business users to SharePoint software developers. This team is responsible for defining development standards, determining and enforcing which tools are appropriate in which circumstances and defining development and deployment related policies and procedures. The Support team is charged with user training, managing the site provisioning process and managing taxonomy, navigation and developing communication plans. The teams, their composition and their activities will be specific for your organization.

An excellent discussion of governance teams that formed the basis of this section was written by Richard Harbridge of Allin Consulting and can be found here: http://www.cmswire.com/cms/information-management/the-5-teams-you-need-for-effective-sharepoint-governance-012328.php

  1. SharePoint Maturity Model

A maturity model represents a definition of the roadmap to optimally developing a specific capability. It allows an organization to quantitatively assess the current state and plan the progression to the next. A maturity model also structures that progression by clearly defining what must be achieved prior to moving to the next phase. You want to go from Phase 1 to Phase 2. Once you’re at Phase 2 you can move to Phase 3.

There are many versions of maturity models available and the challenge Is to either select or customize one that is aligned with the goals of your organization. Maturity models are typically defined along a continuum with distinct and measurable phases. The Capability Maturity Model defines the following generic levels of maturity:

  1. Initial (chaotic, ad hoc, individual heroics) – the starting point for use of a new or undocumented repeat process.
  2. Repeatable – the process is at least documented sufficiently such that repeating the same steps may be attempted.
  3. Defined – the process is defined/confirmed as a standard business process
  4. Managed – the process is quantitatively managed in accordance with agreed-upon metrics.
  5. Optimizing – process management includes deliberate process optimization/improvement

The phases of maturity are often defined along the Y-axis of the model with the various capabilities defined along the X-axis. The capabilities will be determined by the business and technical objectives defined for the SharePoint platform. Major categories can used to organize the specific capabilities. A maturity model that has gained widespread praise throughout the industry has been created by Sadalit Van Buren of BurntSand consulting as can be reviewed here.

As with all governance activities, measure the maturity of the minimum suite of capabilities possible in order to be able to accurately assess that the right progression is occurring. An incomplete model will not provide you with enough information and an overly complex model will be cumbersome and unlikely to be maintained.

  1. Summary

This document has explained the various considerations when implementing SharePoint governance. SharePoint governance functions optimally when included as a subset of an overall corporate integrated governance framework. This will ensure that business objectives, policies and procedures are clearly articulated and enforced and will provide a broader context in which SharePoint governance will operate.

Enterprise Architecture and Business Modeling will help inform decisions when assessing the current state and envisioning future states. EA provides the mechanism for modeling your enterprise and from strategy, business and technology perspectives and creating different viewpoints that are relevant to stakeholders throughout the organization. Business modeling provides a method to understand the impact of change from the perspective of the 9 building blocks to quickly visualize and assess the impact of requested changes.

SharePoint governance is comprised of 5 main areas of focus and requires specific teams made up of stakeholders throughout the organization to be actively engaged on an ongoing basis. The potential benefits related to business alignment, acceptable use, IT assurance and operational optimization are too significant to ignore. There are many potential risks to an ineffective governance program. Unfortunately, almost half of all implementations fail in this area resulting in increased cost and risk and an inability to derive the maximum amount of business value from this often significant investment.

For further information on this exciting topic or to discuss how Intelligence Among Us can be of assistance to you please contact me at jmackenzie@intelligenceamong.us

  1. Bibliography

    Clay, A. (2011). SharePoint Governance 3.0. Retrieved from 21 Apps: http://www.21apps.com/governance/sharepoint-governance-3-0/

    Generation, B. M. (n.d.). Business Model Generation. Retrieved from Business Model Generation: http://www.businessmodelgeneration.com

    Mallik, N. (2011). Metamodel 101. Retrieved from Inside Architecture: http://blogs.msdn.com/b/nickmalik/archive/2011/05/26/metamodel-101.aspx

 

VN:F [1.9.17_1161]
Rating: 9.0/10 (1 vote cast)
VN:F [1.9.17_1161]
Rating: 0 (from 0 votes)

Popularity: 6% [?]

in IT

What the $%#! Is a Metamodel Anyway??

0
by on July 30, 2011 at 4:23 am

The Wikipedia definition of a metamodel illustrates the difficulty one can have in understanding the concept: A meta-model typically defines the language and processes from which to form a model. Huh?

The very plain English version from an Enterprise Architecture point of view is that a metamodel is a collection of all the stuff that makes up your enterprise and their relationships to one another. Basically it’s an ontology which our trusty source Wikipedia defines as: A standardized representation of knowledge as a set of concepts within a domain, and the relationships between those concepts.

As we’ve discussed, Enterprise Architecture is typically broken down into layers focusing on strategy, business and technology or business, application, data, technology depending on the framework you have chosen.

The metamodel is where the EA rubber hits the road so to speak. You populate your EA content by populating the various elements in the metamodel and the related properties which then provide you the ability to create different views of that information that are relevant to specific audiences. Let’s illustrate this with a simple example:

As you can see we have specific elements in each of layer of our EA. These layers are sometimes referred to as sub architectures. It is also critical to clearly define each of the elements so there is a shared understanding about what the terms mean. Looking at the diagram it becomes clear that our metamodel provides a structure for our content and enforces rules about which elements can be related to what. For the more technically inclined – think of the metamodel as your database schema

For example – a Business Initiative would obviously not be directly related to a Device in the Technology layer. However by navigating through the layers and elements you can see that there is an indirect relationship between the two. Having said that, this metamodel would allow us to analyze what business initiatives would be potentially impacted if there was a problem with a specific device.

As well as providing a common definition for the elements that comprise your enterprise, the metamodel and associated modelling tools also provide the ability to make a lot of the documentation that typically collects dust actionable. An example of this would be the ubiquitous Business Process diagram. You know – the one that always seems like a great idea for the business analyst to show how well they know the business and the one that doesn’t get updated as the change requests start flowing in.

Instead of using Visio or another drawing tool to create your swim lane diagrams you would open your modelling tool and create a new business process diagram and model it using BPMN. You would then link it to its related elements and voila! You now have a diagram that can be used in many more meaningful ways to the benefit of the enterprise. You can easily assess the impacts of any changes, you can quickly see where the process is used and by which groups in your enterprise and you can see which data elements are used to support the process. Therefore there is an incentive to, through your EA governance processes, to ensure that the process diagram is kept up to date.

Most EA frameworks provide a metamodel and the more advanced tooling supports the implementation. Below is an example of the TOGAF (The Open Group Architecture Framework Metamodel:

A tool such as IBM Rational System Architect supports the TOGAF metamodel by having the elements and their relationships predefined when a new TOGAF project is created. These elements are extensible in the sense that you can easily add organization specific properties to them which would be driven by the information requirements of the various stakeholders.

Another important point to note is that because the elements are related to one another you have flexibility in where you begin populating the metamodel. Again, this is driven by the requirements of the stakeholders. If your EA initiative is nascent you could begin by modelling the application and technology related elements and expanding upwards towards elements in the business architecture as your EA capability matures.

The EA artifacts you create (Swim Lane Diagrams, Node Connectivity Diagrams, Data Flow Diagrams etc.) are built from and linked to the elements in your metamodel. This makes the artifacts dynamic in the sense that they are driven by real data and you have the capability to drill-down through them to see all the related information. Multiple future states can then easily be modelled to assess the potential impacts of any changes.

In order to ensure that an organization gets the most value out of their technology investments there needs to be alignment between the technology and the business. This is a problem you hear constantly – everyone knows there needs to be alignment but very few understand practically how to do it, model it or measure it. Enterprise Architecture is one of the disciplines that will enable an organization to accomplish this. The metamodel is where you relate business and technology architectures which will allow you to make smarter, more well-informed decisions going forward.

Enterprise Architecture has the ability to make things visible that were previously hidden and this is done through choosing, extending, populating and reporting on the metamodel.

VN:F [1.9.17_1161]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.17_1161]
Rating: 0 (from 0 votes)

Popularity: 11% [?]

in IT

Small Thinking – the Antithesis of Big Thinking

0
by on July 28, 2011 at 7:56 am

Theodore awoke with a start covered in sweat. Glancing over at the clock it read 2:46 am. He possessed an astonishing level of clarity about his life that he had never experienced before. He bolted from bed and emailed his supervisor. “You are the man and I can no longer work for the man.” Theo purchased himself a plane ticket to Tibet and then bought a Yak from Amazon. He donned the chuba that he had crafted with his own hands for just such an eventuality and headed to the airport. As he mounted his steed to begin his literal and figurative ascension things went south back home. The mission critical systems that Theo had been working on as a software developer crashed causing massive disruption to his former employer, aka The Man. You see, Theo was a software developer – a software developer who, unbeknownst to his teammates, sucked the big one.

As the emails started pouring the development team struggled mightily to determine what was happening and how to fix it. It began with not knowing where the source code for the system was and then when finding it finding multiple versions. Once that was sorted out the problem was knowing where to look and then deciphering the hacked together mess of spaghetti code in order to begin to understand the root cause. To make a long story short, 18 hours later the problem was resolved. But the real problems that had been festering for a long time had just been brutally exposed.

After receiving the tongue lashing of her life from the CEO, the CIO stalked down the hallway looking for the supervisor of the development team grabbed him by the ear and dragged him into her office. “You have 2 days to come up with a plan to ensure that this never happens again. It will encompass standards, processes, backup resources on systems and anything else you think is necessary. You’ve really let me and the entire company down. Now get out and get to work.”

Jason assembled his team of 10 developers and looked around the table. Quite frankly he was at a loss and didn’t know what to do he opened the floor to suggestions. Harvey, one of his more obstinate developers started with, “What is the point? We’ve tried to implement standards before and it never amounts to anything. We’re too busy, pulled in a million different directions. Besides, is anyone else going to buy a Yak and go to Tibet? Probably not so I don’t see much risk of this happening again! ” Nancy piped up with, “Plus we’re trying agile development and that doesn’t seem to be helping. Why throw more stuff into the mix.”

Jason closed his eyes and thought about how the whole “agile” thing had been going:

Full stop! This is where teams typically shoot themselves in the foot by thinking small. Invariably irrelevant suggestions like commenting code, naming conventions etc. get tossed out as good ideas. Clearly this will never be enforced leading the team to the conclusion that standards, while good on paper, are a waste of time. So what would I do? I’d Keep in mind that “big” means big in the context of our problem here. Not “big” like world peace or preventing pandemics.

Role Clarification

The first thing I would do is to explain clearly what the role of the software developer is in the organization and clarify how they are expected to add value. This means explaining, as often as necessary, that they bring value by developing custom business logic that solves real business problems. That means looking at things through the prism of the company’s mission and objectives. If you make car parts and the development activities don’t help make car parts better, faster cheaper or more safely there is a problem. Admittedly some of this is beyond the control of the software developer. In their direct sphere of influence this means not writing redundant code, using proven practices and frameworks etc. It never ceases to amaze me how developers are resistant to the idea of using something created by someone smarter.

If there are business analysts in the organization I would provide further clarification on the role of the business analyst versus developer. As a leader want my developers to be the absolute best technical experts in their field they can be. This means supporting and encouraging them to get to where they need to be but also shielding them from performing activities that won’t take them there. My role as the leader is to break down the natural resistance between these two groups so we can work productively. Strong business analysts working with exceptional developers can make magic happen.

Frameworks

Framework is one of the more overused words in the world of software development. In this context I mean the overall structure and approach for developing the required business solutions. This means taking a convention vs. configuration approach to developing solutions. Wikipedia defines this as “a software design paradigm which seeks to decrease the number of decisions that developers need to make, gaining simplicity, but not necessarily losing flexibility.” In other words – applications have been built for a long time and there is a best way to go about them. So do that and modify only what you need to suit your specific purpose.

To illustrate my point I’ll discuss ASP.Net MVC (Model-View-Controller) framework for developing dynamic web applications. For all the Microsoft haters out there – relax – there all kinds of great languages, environments and frameworks. Creating an ASP.Net MVC application gives you the following benefits.

  1. A predefined solution structure as seen in the following screen shot which will provide immediate familiarity to all developers on your team.

     

  2. Separation of Concerns. This basically means that stuff goes where it should. HTML and script go in the Views, business logic goes in the Controllers and the data access goes in the Models. Naturally a developer can still screw this all up but the framework provides a rich environment so the opportunities to deviate from the pattern are reduced.

     

  3. Standard Naming Conventions. Controllers and their actions as well as views have standard naming conventions making it simpler to find what you are looking for

There are clearly more advantages but this illustrates the benefits of using frameworks in the context of this article.

Another example is ORM or Object Relational Mapping. This means using something like the Entity Framework for data access operations. What this provides is a mapping from your database tables to strongly typed objects which support CRUD operations, relationships etc. An entity data model will look like the following screen shot:

The relationships between your objects are defined by the primary key/foreign key relationships in your database. So in this example an Order object will have a related collection of OrderDetail objects. This entices the developer or DBA to create those relationships properly in the database as there is a direct benefit to the developer when developing solutions. It also follows a standard naming convention by naming the types created the same as the tables in your database which further simplifies things.

Design Patterns

Another simple approach is the adoption of a set of design patterns useful to your specific circumstance. Wikipedia defines design patterns as a general reusable solution to a commonly occurring problem within a given context. Or in other words: many of the problems you are trying to solve have been solved already so use that approach. There are many design patterns and not all will be applicable. Review them, pick a few that seem pertinent to the work you do and start using them. The developers that maintain your code in the future will thank you for it.

Governance

Clearly, a significant part of the problem is the absence of management frameworks such as IT Governance, Project Portfolio Management and Enterprise Architecture. These are beyond the scope of the developers to influence in our example with the incredibly short timeline. Going forward they will need to be established in order for the organization to truly get the most value from its technology investments. This will be covered more in a future post.

Conclusion

In our fictitious example we were presented with a catastrophic situation caused by a fragmented development team creating business solutions with no standards. The goal was to quickly come up with some ideas for minimizing the risk of this catastrophe reoccurring or minimizing the impact if it did. There are many more areas to be looked at but we discussed the some that can be implemented easily providing some quick steps in the right direction. Let’s summarize what we are planning.

  1. By clarifying the role of the developers vis-à-vis the business analysts we will, in time, allow the developers to focus more closely on what they are paid to do. By helping them understand how they add value will also provide context for some of the other ideas we’ve discussed
  2. Agreeing to adopt Frameworks such as the ASP.Net MVC will bring the team a long way in creating a sweeping set of standards far larger in scope than some of the typical suggestions. Naming conventions, separation of concerns, standardized HTML output, solution structures, database design and ORM are some of them. These are significant and can be accomplished easily making your team much more able to step in and maintain someone else’s solution.
  3. Defining what kind of problems that are typically faced and adopting proven design patterns to solve them will also go a long way in creating more standardized business solutions reducing risk and easing maintenance.

On a more intangible note – people respond well to using these frameworks and patterns and being encouraged to be professional experts in their areas of practice. The development of professional, robust and maintainable solutions fosters satisfaction and team cohesion which leads to the development of more professional, robust and maintainable solutions. It becomes a self-perpetuating cycle of excellence.

So with a few relatively simple concepts we can accomplish some huge steps towards making ourselves a more professional and trusted team within the organization.

The ultimate goal is to make sure that the organization is not at risk the next time one of your team members decides that working for you is akin to some medieval form of torture and leaves at the drop of a hat. Best of luck Theodore – we’ll talk again soon!

VN:F [1.9.17_1161]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.17_1161]
Rating: 0 (from 2 votes)

Popularity: 8% [?]

in IT

Enterprise Architecture

0
by on May 15, 2011 at 10:24 am

Working with my current client to help lay the foundation for building an Enterprise Architecture has entailed a lot of very interesting experiences. I, with a few others, have spent the better part of the last year talking to and educating the stakeholders in the organization about what EA is, where it can bring value and how it complements other management frameworks to comprise a business model for the use of technology assets. Look for future blog posts on these subjects.

For myself I will be moving forward as an EA Consultant by broadening my skill set and by getting my TOGAF 9 certification later in the week as well as attending a 10 day IBM EA Bootcamp next month which will provide some excellent hands on time using Rational System Architect and producing a wide-variety of EA deliverables.

My next posting will discuss my views on the required level of organizational buy-in required to begin the EA journey and how to pitch the benefits to various audiences.

VN:F [1.9.17_1161]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.17_1161]
Rating: 0 (from 4 votes)

Popularity: 9% [?]

in Uncategorized

4 Clicks or 1? Using jQuery to Start a SharePoint Workflow.

1
by on April 19, 2010 at 1:57 am

The IT Urgent Change process needs to be automated.  It’s relatively simple and after gathering the requirements its clear that this can be accomplished using SharePoint and a SharePoint Designer workflow.  The workflow is created and published to the list.  The decision is made that the workflow will be started manually as opposed to automatically when the Change Request is created.  Everyone in IT has contribute access to the list and there are no security requirements related to who can or can’t start a workflow.

This means a user must take the following steps to initiate the workflow:

1. Click the context menu and click the Workflows menu item

2. Select the Change Process Workflow.

3. Initiate the Workflow

That’s a few more clicks than should be required so I wanted to find a way to make starting a workflow a one-click affair.  I knew this should be relatively simple with jQuery and the Dataview Web Part so I’d like to detail how I accomplished this so others can hopefully benefit from it.

The end result looks like this:

When the user clicks the Start Workflow link they see a nice Ajax loading image as seen below:

When the workflow has been initiated they are presented with a confirmation message telling them the process is underway:

On to the solution!  First I need to give a shout out to Marc Anderson , the creator of the jQuery Library for SharePoint Web Services which can be found here: http://spservices.codeplex.com/.  This is such a handy tool for interacting with the SharePoint web services from the client and this was my first opportunity to use it.  I simply downloaded the JS files and put them in my SharePoint Scripting Resource Centre site collection as first conceived by Mark Miller at EndUserSharePoint.com.  The original post can be found here: http://www.endusersharepoint.com/2010/01/05/build-a-sharepoint-scripting-resource-center/

Once that was done I need to do a few things.  I created a Web Part Page and opened SharePoint Designer.  I then added the Change Request list to one of the web part zones.  In order to get the customizations that wanted needed to create a DataView out of it so I simply right clicked on the list and converted it to a XSLT Dataview.   That’s all I really need to do here so I saved the page and opened it up in the browser.  What you can do with a dataview is almost limitless.  The best way to tackle customizations is to make all the changes you can using the SPD interface.  Once you have reached the limits of what you can do there you can start customizing the XSL.  Refer to the following series by Marc to learn everything you need to know about XSL and the DVWP.  http://www.endusersharepoint.com/2010/01/19/unlocking-the-mysteries-of-data-view-web-part-xsl-tags-part-1-overview/

When you modify a dataview in the browser you have a different set of options then when you work with a regular list.  The important thing we want to do here is modify the XSL in order to achieve the look and functionality we want.

In the interests of saving my sanity I copied the XSL and pasted it into SharePoint Designer (just a new XML document) so I could at least have the benefit of some colour in my life.  I added the following snippet  which I’ll explain as I go.

<xsl:if test=”not(normalize-space(@ChangePr) = ’5′ or normalize-space(@ChangePr) = ’2′)”>

<div>

<xsl:attribute name=”id”>

<xsl:text>WorkflowDiv</xsl:text>

<xsl:value-of select=”@ID” disable-output-escaping=”yes”/>

</xsl:attribute>

<a href=”#”>

<xsl:attribute name=”onclick”>

<xsl:text>javascript:StartWorkflow(‘</xsl:text>

<xsl:value-of select=”@EncodedAbsUrl” disable-output-escaping=”yes”/>

<xsl:text>’,'</xsl:text>

<xsl:value-of select=”@ID” disable-output-escaping=”yes”/>

<xsl:text>’);</xsl:text>

</xsl:attribute>

Start Workflow</a>

<img style=”visibility:hidden” src=”http://employeeportal/sites/sprc/PublishingImages/ajax-loader.gif”>

<xsl:attribute name=”id”>

<xsl:text>Loader</xsl:text>

<xsl:value-of select=”@ID” disable-output-escaping=”yes”/>

</xsl:attribute>

</img></div>

</xsl:if>

The result I want to achieve with this is another column in the dataview with the “Start Workflow” link that will call a Javascript function and passes in a few parameters and uses the jQuery Library for SP Web Services to kick off the workflow.

The following section says that we’re only going to render the link when the workflow is not complete or cancelled.  When you covert a list view to a dataview your workflow column which normally reads “In Progress’, “Completed” etc. switches to the numerical value.  Why?  I haven’t a clue.  But the easiest way is to use SPD to create some conditional formatting and then just copy the XSL that is generated.

<xsl:if test=”not(normalize-space(@ChangePr) = ’5′ or normalize-space(@ChangePr) = ’2′)”>

You can see that the 2 values we pass to our StartWorkflow function are the EncodedAbsUrl and the ID of the list item in question.  The EncodedAbsUrl for a list item looks like this: http://servername/sites/its/Lists/Change%20Request/107_.000.   We also output a hidden image with our nice loading image downloaded from http://www.ajaxload.info that will appear beside each item while the workflow is initiating.

Also note that our loading image and the div that wraps everything have an id property that concatenates on the list item id to it that we’ll use in our client side script.

On to the jQuery.   We need to add a Content Editor Web Part to our page and place the following script inside:

Our jQuery and jQuery Web Services references

<script type=”text/javascript” src=”/sites//sprc/Resources%20%20jQuery/jquery-1.3.2.min.js”></script>

<script  type=”text/javascript” src=” /sites/sprc/Resources%20%20jQuery/jQuery%20SP%20Services/jquery.SPServices-0.5.4.min.js”></script>

<script type=”text/javascript”>

function StartWorkflow(ItemURL, ItemID)

{

var loadingImage = ‘Loader’ + ItemID

var workflowDiv = ‘WorkflowDiv’ + ItemID

//Show our loading image

document.getElementById(loadingImage).style.visibility = ‘visible’;

$().SPServices({

operation: “StartWorkflow”,

item: ItemURL,

templateId: “{04ee1c93-f6b7-49b3-a79c-fa3142ecd688}”,

workflowParameters: “<root />”,

completefunc: function() {

document.getElementById(workflowDiv).innerHTML = ‘Workflow Started’;

}

});

}

</script>
As you can see there is very little scripting required here.  We take the URL of the list item and the item id.  We then show the loading image and make the web service call through Marc’s library:

There are 4 parameters.

  1. The operation is “Start Workflow”
  2. The URL is the value of the EncodedAbsUrl for the list item mentioned earlier.

The template id is the guid of the workflow template that we created in SharePoint Designer.  You can find this out by following the first 2 steps at the very beginning of this article and then copying the URL from your browser.  It will look something like this: http://servername/sites/its/Workflows/Change%20Process/Change%20Proce.aspx?List=d0fa2d98-6086-4c97-be85-4746c801e7f3&ID=89&TemplateID={04ee1c93-f6b7-49b3-a79c-fa3142ecd688}&Source=http%3A%2F%2Femployeeportal%2Fsites%2Fits%2FLists%2FChange%2520Request%2FAllItems%2Easpx.  You can see that there is a TemplateID value in the query string and that’s what we want

  1. Our workflow doesn’t have an initiation screen so we simply pass it an XML node.  You have to do this or the workflow will throw an exception.  This took some digging to find out why the workflow wouldn’t start.
  2. completefunc – what we want to happen when we’re done.  In this case we just want to get rid of the image and let the user know the workflow started.  Remember that AJAX is asynchronous so if you try to take post-initiation actions with code inline it will actually run prior to the workflow having been started.  If you want something to happen after the call to the SPServices library is done, put it in the completefunc.

There is no error handling in this solution yet but if you go to Marc’s Codeplex site you can see methods on how you can have error information returned and then trap them. It’s pretty straightforward.

That is how I used, jQuery, the jQuery Library for SharePoint Web Services and the DataView Web Part to allow a workflow to be started with one click.

VN:F [1.9.17_1161]
Rating: 10.0/10 (4 votes cast)
VN:F [1.9.17_1161]
Rating: +1 (from 1 vote)

Popularity: 100% [?]

in IT, SharePoint

, ,

1 2 3 8 9
WordPress Loves AJAX