04 September 2016

The Open Group Paris - Oct 24-27, 2016 - Early Bird Rate Ends Sept 16


The theme for The Open Group Paris event is e-Government. Attendees will benefit from the opportunity to learn from industry leaders, network with peers and explore content that is relevant to both themselves and their organizations.

Emphasis will be on how techniques (such as Enterprise Architecture and Business Design) and how standards (such as TOGAF® and ArchiMate®) are acting as a foundational core for enterprise transformation.

Topics include: Issues surrounding business transformation, EA in government, digital business and customer experience, IT4IT™ in Practice, professional development and cyber-security.

Early Bird Registration - Ends on Friday, September 16, 2016

01 September 2016

Webinar: The TOGAF® Framework and Accelerated Delivery

Date: September 9, 2016 - 3:00pm (BST), 10:00am (EDT), 7:00am (PDT)
Speaker: Alan Simmonds (Consultant, Good e-Learning)

This webinar will look into accelerated delivery (not just Agile!) and how we can start to integrate this thinking across the Enterprise Architecture development cycle. TOGAF®, an Open Group standard, is a large framework and what this provides is a number of techniques for us to use and adapt for the accelerated delivery approach.

We’ll look at what accelerated delivery means, whether it is relevant in the Enterprise Architecture world and how we can start to integrate some of this thinking into our own architecture work.

To register, click here

11 July 2016

The Open Group Event @ Austin (July 18-21, 2016)

When it comes to Enterprise Architectures, what does it mean to be "open"? In the technology industry, often we hear about things such as "open standards" or "open source" but what does open mean in each context and why are those differences important?

This event will focus on how organizations can use openness as an advantage and how the use of both open standards and open source can help enterprises support their digital business strategies. Sessions will look at the opportunities, advantages, risks and challenges of openness within organizations.

Keynote sessions will include:

The Future of Business Architecture: Challenges and Opportunities (Jeff Scott - President - Business Innovation Partners)

ArchiMate® 3.0 A New Standard for Architecture (Iver Band - Enterprise Architect - Cambia Health Solutions, Mark Lankhorst - Managing Consultant and Service Line Manager - BIZZdesign)

Driving IT Strategic Planning at ExxonMobil with IT4ITTM (Rick Solis, IT Business Architect - ExxonMobil Global Services Co. )

For details regarding fees, agenda, other information and registration, please use following URL



01 July 2016

SharePoint 2013 - Opening Search results in new tab/window

In SharePoint 2013, we can use Search Center site to show/display SharePoint search results.

Each search result has 3 parts -
  • Heading (which acts as URL/link)
  • Description
  • Actual URL
We can click on the heading which is actually a hyperlink to go to the search result destination. By default, the search result is opened in same window if we click on hyperlink. If you would like to open the search result in a new window, then it can be achieved by customizing the search results display template. Here are the steps for same - 
  • Go to Site Settings (You should have Site Collection Administrator permission).
  • Go to section Web Designer Galleries.
  • Click on Master pages and page layouts.
  • A document library will open. Go to folder Display Templates --> Search
  • Find following file in the folder - Item_CommonItem_Body.html
  • Check-out the file and edit in any text editor.
  • Find following line of text - 

var titleHtml = String.format('<a clicktype="{0}" id="{1}" href="{2}" class="ms-srch-item-link" title="{3}" onfocus="{4}" {5} {6}</a>',

Add target="_blank" between {5} and {6}. After modification, it will look like this

var titleHtml = String.format('<a clicktype="{0}" id="{1}" href="{2}" class="ms-srch-item-link" title="{3}" onfocus="{4}" {5} target="_blank">{6}</a>',
  • Save the file and upload it back to same location from where it was downloaded.
  • Check-in and Publish the file.
  • Make sure to publish as a major version. In the past, we have faced problem in this template getting applied to other users without major version being published.
Perform a search on the search center site and click on any of the search results. The hyperlinks will now open in new tab/window.

Hope this helps !!!                                                                                

01 June 2016

SQL Server Guidelines

Database Structure Guidelines

  • Each table must have a primary key and a clustered Index. Clustered Index for any table is necessary and is created with the Primary Key (Only one can be created per table) . GUID fields should not be used for clustered indexes even if used as table’s Primary Key
  • Multiple non-clustered indexes can be created for a table. Each index will be tagged to a column. Choose columns on which data will be filtered (example: create a non-clustered index for User ID column in the UserMaster table)
  • Do not try to create too many non-clustered indexes. Avoid over indexing the tables. The non clustered indexed column should be updated less frequently. 
  • Do not use TEXT as a data type; use the maximum allowed characters of VARCHAR instead  like varchar(50).
  • Use the Database Engine Tuning Advisor to analyze your database and make index recommendations
  • Any table that has a VARCHAR(MAX) column is a candidate for poor performance. Create a column of this type only if absolutely necessary . In case of selecting data from this table, avoid selecting the VARCHAR(MAX) column. If it is absolutely necessary, select this column separately on demand 
  • Try to avoid duplicate values/attributes in the database. Normalize the database. Redundancy of same attributes causes data inconsistency issues hence is not recommended.

Coding Guidelines

  • Write queries that insert or modify as many rows as possible in a single statement, instead of using multiple queries to update the same rows. By using only one statement, optimized index maintenance could be exploited.
  • Cursors, Triggers should be avoided.
  • Index Scan vs Index Seek: If we have a table with 1000 rows and we are querying all 1000 rows, then an index scan is performed, where every row of the table is parsed 
          Example: select * from UserMaster
        
          On the same table, if we are querying only 10 rows, then an index seek will be performed
 
          Example: select * from UserMaster where fkRoleId = 10 

         When any functions are used in the where clause, then an index scan is performed which results          in a very high cost for the query that may not be necessary

        Example: select * from UserMaster where LEFT(UserId) = 'pa'
       In the above example, we are using the “LEFT” function to ascertain the first two characters of           the query. However, since we are using a function on a column in the where clause, this                       function will be executed on every row of the table to check the condition – resulting in an                   Index Scan. Instead, we can re-write the query like this:

  select * from UserMaster where UserId like 'pa%'
  • Do not call functions repeatedly within your stored procedures, triggers, functions and batches. While writing functions in the WHERE clause results in an Index scan and a very poor performance, functions used in the SELECT clause also affect the performance of a query at a smaller scale. Avoid Functions in SELECT clause wherever possible.
  • Use Bulk Loads/Inserts for faster response times.
  • Minimize the use of NULLs, as they often confuse front-end applications, unless the applications are coded intelligently to eliminate NULLs or convert the NULLs into some other form. 
  • Use SET NOCOUNT ON at the beginning of stored procedures  to reduce network traffic.
  • Off-load tasks, like string manipulations, concatenations, row numbering, case conversions, type conversions etc., to the front-end applications if these operations are going to consume more CPU cycles on the database server 
  • Avoid the use of cross joins, if possible. 
  • Avoid dynamic SQL statements as much as possible. 
  • In a table, if a column’s type is varchar, then use single quotes for the value. If single quotes are not provided, then SQL Server does an implicit conversion, which results in a Index Scan
         Example – Column OrgID is VARCHAR(10) 

   SELECT * FROM UserMaster WHERE OrgId = 2 

        This will result in an index scan, because SQL Server will implicitly convert the value “2” to               varchar.

SELECT * FROM UserMaster WHERE OrgId = '2' 

       This will result in an index seek, since there is no implicit conversion required.
  • Avoid wildcard characters at the beginning of a word while searching using the LIKE keyword
  • Avoid searching using not equals operators (<> and NOT)
  • Select * from [table]  should be avoided. Always query for only the required number of rows – querying for all rows and filtering in the Business Layer or UI is a bad practice.
  • When using a table variable in joins, and when the table variable is inserted with large amount of rows, use the RECOMPILE statement, so that SQL Server Optimizer will consider the large amount of rows and use the correct join method. 
  • Use temporary tables for filtering /manipulating or implementation of business logic.
  • While using temp tables ensure that only filtered data from the actual table is inserted into the temp table not the entire dataset. 
  • Table partitioning can also have performance benefits but it needs to be evaluated before proceeding.
  • Use joins instead of sub queries as the former is faster. 

20 May 2016

Agile Tutorial - Release Planning / Sprint 0

Release Planning or Sprint 0 is a key event in Agile process. Here the entire team participates to create a Release backlog from Product backlog along with a release plan/schedule. It is focused on only one release. A release cycle is generally of 3-4 months.

In release planning, Product backlog consisting of features/epics is further groomed by adding User stories. These are prioritized and estimated. Based on team capacity (also known as velocity), sprints are planned along with release (deployment) date.

Few key points -

  • Release planning is the first meeting where entire core scrum team participates. This runs for 2-3 weeks.
  • Product owner shares the Product vision and Roadmap which is the output of first two levels of planning meetings.
  • Based on the Roadmap, Epics/Features for this release is the only focus.
  • Depending on the state of the Backlog, two key activities happen - 
    • Story breakdown
    • Backlog grooming
  • In these activities, epics/features are converted to user stories.
  • One user story is one requirement which has a specific format and follows INVEST principle. It is small and detailed enough that it can be estimated.
  • User story prioritization is done - 
    • Using MoSCoW analysis
    • By assigning business value
    • By assigning requirement clarity
    • By assigning technical clarity
  • User story estimation is done using Planning Poker/ Wideband Delphi techniques. Estimation is done by developers and testers of team in Story Points.
  • Parallel activities like High level architecture/design, prototyping is done. Team setup like desktops, software, licenses installation/procurement is done in parallel. If number of team members is high, then team division is also done.
  • Team will now have a prioritized and estimated Release backlog.
  • Using the Triple Constant Triangle technique, Release plan/schedule is prepared having following details - 
    • Number of sprints and their dates.
    • Release/Deployment dates.
    • Planned velocity and their projections.

15 May 2016

Agile Tutorial - What is Agile Planning?

Agile planning is the process of brainstorming with key or all stakeholders/members to define goals, identify activities to achieve the goals and planning/organizing the activities.

There are 5 different levels of planning in Scrum framework. Each has a associated Scrum Ceremony with specific objectives. Like any other ceremony, all these planning meetings are time-bound.

5 levels of Agile Planning -

  • Product Vision
  • Product Roadmap
  • Release Planning
  • Iteration Planning
  • Daily Planning
Product Vision

This is a broadest level picture of the product, with a vision statement of the Product Owner along with different business users/stakeholders. This is done yearly as part of Vision workshops, where questions like what the product should be, how it should work, who it should benefit, how/when it will be achieved etc. Various assumptions and constraints are discussed too.
Keywords - What, Who, Why, When, Constraints, Assumptions

Product Roadmap

Roadmap serves as next building block assigned with the vision. These are done as Roadmap Workshops either bi-yearly or quarterly with high level pieces identified for the next 4 quarters. These pieces can be Business Features (also called Epic/Themes), and or Architectural components. These go into Product Backlog with initial estimates done using 'SML (Simple-Medium-Complex)' methodology. Planning of releases is also done along with their tentative dates.
Keywords - Release date, Theme/Feature set, Objective, Development Approach

Release Planning

This is also known as Sprint 0. Its focus is only on the current release. It involves creating Release Backlog. A release backlog consists of user stories from features/epics. These are prioritized using multiple iteration techniques. These are estimated using Story Point estimation technique. Release planning is done by involving the entire team and it generally has a time-line of 2-3 weeks. Sprint/Iterations and release dates are planned based on the estimates and team strength/capacity.
Keywords - Iteration, Team capacity, Stories, Priority, Size, Estimates, Completion definition

Sprint/Iteration Planning

This is the first activity that is taken up in every Sprint/Iteration. Focus is only on the current sprint. This is done by involving entire team for 2-4 hours. This activity involves picking up top stories from the Release Backlog and creating Sprint Backlog out of it. The Sprint Backlog consists of Tasks having estimates in Hours. Sprint Goal is also defined and Sprint Commitment is given by the team. 
Keywords - Stories, Tasks, Completion definition, Level of effort, Commitment

Daily stand-up

It is a 15 minute time-boxed/bound meeting between all team members. Each team member talks about what they have accomplished yesterday, what are the plans for today and impediments if any in achieving them. This ensures that team is on the same page and everyone in the team has a sense of purpose and meaning about the work to be accomplished on a daily basis.
Keywords - What I did yesterday?, What I will do today?, What is stopping/blocking me?


10 May 2016

Agile Tutorial - What is Scrum framework?

Scrum is a time-boxed, iterative and incremental agile software development framework. It is the most commonly used Agile methodology in the software industry.

The Scrum approach to Agile software development marks a dramatic departure from waterfall model. Scrum emphasizes collaboration, functioning software, self-organized team, and the flexibility to adapt to emerging business realities.

It is inspired by empirical inspect and adapt feedback loops to cope with complexity and risk. It uses real-world progress to plan and schedule releases. Time is divided into short work cadences, known as Sprints or Iterations. These are typically two week long. At the end of each sprint, stakeholders and team members meet to see a potentially shippable product increment and plan its next steps. This allows direction to be adjusted based on completed work, and not on a plan or speculation or predictions.

Scrum is a simple set of roles, responsibilities and meetings that never change. It is a charter of 3 pillars, 3 roles and 3 artifacts.

3 pillars/foundations of Scrum -
  • Transparency/Visibility
  • Inspection
  • Adaptation
3 roles in Scrum
  • Development Team - Self-organizes to get the work done.
  • Product Owner - Responsible for the business value of the project.
  • Scrum Master - Ensures that the team is functional and productive and is following scrum.
3 artifacts in Scrum
  • Product Backlog - Ordered and Prioritized list of ideas for the product.
  • Sprint Backlog - Set of work from the Product Backlog that the team agrees to complete in a sprint. It is broken down into individual definable tasks.
  • Product Increment - Required result of every sprint. This is an integrated version of the product kept at high enough quality to be shippable.
Scrum ceremonies
  • Sprint Planning - Before the sprint, the team meets with the product owner to choose a set of work to deliver during the sprint.
  • Daily Stand-Up - During the sprint, the team meets each day to share progress and impediments.
  • Sprint Review - After the sprint, the team demonstrates what is has completed during the sprint.
  • Sprint Retrospective - After the sprint, the team looks for ways to improve the product and the process.

06 May 2016

Workflows in SharePoint 2013


Overview of workflows in SharePoint 2013

  • SP 2013 workflows are powered by Windows Workflow Foundation 4.
  • SP 2013 workflows run in Microsoft Azure.
  • SP 2013 workflows are declarative only (XAML).
  • SP 2013 workflows are designed to interact with cloud and work with SharePoint 2013 apps.
  • SP 2013 workflows are hosted and run outside SharePoint environment.


Workflow Manager Client 1.0
  • Provides the management of workflow definitions.
  • Hosts the execution processes for workflow instances.
  • New workflow execution host.
  • In SharePoint 2010, workflow execution was hosted in SharePoint itself.
  • In SharePoint 2013, workflow execution is moved outside SharePoint (in Workflow Manager Client).
  • Workflow Manager Client 1.0 interacts with SharePoint 2013 via Workflow Manager Client 1.0 Service Application proxy.
  • Server-to-server authentication is provided using OAuth.
  • SharePoint events are routed to Workflow Manager Client 1.0 using Microsoft Azure Service bus.
  • REST API is used by Workflow Manager to call back SharePoint.

What’s new in workflows for SharePoint 2013

1. Enhanced SharePoint Designer 2013 authoring support
  • SharePoint Designer 2013 provides workflow authors with both a designer surface and a text based workflow authoring environment.
  • It can import custom actions (created in Visual Studio 2012).
  • Custom actions can be accessed from Workflow designer.
  • Can be effectively used by both non-developers and developers.

2. Visual Studio 2012 workflow project type support
  • Visual Studio 2012 introduces SharePoint workflow project types.
  • It also provides workflow custom action-item type that lets developers create custom actions.

3. Completely redesigned workflow infrastructure
  • SharePoint 2013 workflows are powered by Windows Workflow Foundation 4.
  • Uses messaging functionality provided by WCF 4.
  • Microsoft Azure is the new workflow execution host.
  • Workflow execution engine is outside of SharePoint in Microsoft Azure.

4. Fully declarative, no-code authoring environment
  • Workflows are fully declarative.
  • They are no longer compiled into assemblies.
  • No longer deployed to assembly cache.
  • XAML files define workflows and frame their execution.

5. Tool support for SharePoint workflows
  • Visual Studio 2012 provides templates and support for creating SharePoint 2013 workflows.
  • SharePoint 2013 workflows can also be created using SharePoint 2013 Designer

6. New workflow actions 
  • Many new workflow actions have been added in SharePoint 2013 workflows.
  • New workflow actions enables workflows to integrate with Project 2013 by creating Project based workflows

SharePoint workflow interop

  • Enables SharePoint 2010 workflows to be executed from within SharePoint 2013 workflows.
  • SharePoint 2013 includes a SharePoint 2010 workflow host i.e. Windows Workflow Foundation 3 engine. 
  • This is used for executing for SharePoint 2010 workflows.
  • Helps in backward compatibility.

Workflow Authoring Components

1. SharePoint Designer 2013
  • Create and deploy both SharePoint 2010 and 2013 workflows

2. Visual Studio 2012/2013
  • Provides a designer surface for creating declarative workflows
  • Create SharePoint apps and solutions that fully integrate with Workflow Manager Client 1.0 functionality.

02 May 2016

SharePoint 2013 App Licensing

What are SharePoint 2013 app licenses

  • An app license is a digital set of verifiable information stating usage rights of an app.
  • Usage right means – 
    • App is free or need to be purchased
    • App is available on per-user or site basis
    • App is a trial or full version
  • App license can be verified by querying Office store.

SharePoint 2013 App license categories

License Type
Applies To
Duration
Users
Cost
Perpetual all user
All users of a SharePoint deployment, with no expiration
Perpetual
Unlimited
Free or paid
Perpetual multi user
Per user, with no expiration
Perpetual
N (per user)
Paid
Trial all user
All users of a SharePoint deployment.
Can have a set expiration date.
15, 30, 60 days, or unlimited
Unlimited
Free
Trial multiuser
Per user.
Can have a set expiration date.
15, 30, 60 days, or unlimited
N (per user)
Free


App license features
  • App license applies to – 
    • Specific app
    • For a specific SharePoint deployment
    • And Specified users
  • Only site, tenant, or farm administrators can purchase app licenses, as only users with those roles have sufficient privileges to install an app in a site.
  • For security reasons, app license tokens expire and must be renewed periodically.

App licensing framework
  • Provides a way for app developers to customize app access and behavior based on license information.
  • Does not enforce app licenses on its own.
  • It just provides a structure which can be used by code in app to retrieve license information and act accordingly.
  • Applies only to apps downloaded from Office store.
  • Provide APIs to get license information.
  • Provides web service to verify license validity with Office store.

App license acquisition process
  • User acquires/downloads the app from Office Store or App catalog.
  • Office store generates app license and license token.
  • License token is downloaded to SharePoint deployment.
  • User can manage the license token and assign license to one or more users based on license type.

App license verification process
  • App license token gets downloaded to SharePoint installation during installation.
  • When app is launched, app’s license checking code queries the SharePoint deployment for the license token.
  • App verifies license token’s validity and retrieves license information by querying Office Store verification web service.
  • Based on license validity & information, app code takes appropriate action.

App license verification – Best practices
  • For security reasons, minimize access to code that performs app license check.
  • For security reasons, Use server side code to query Office store verification web service.
  • For performance reasons, check for license only when needed.
  • For performance reasons, cache the license token (if possible) until it expires. 
  • Ensure that production version of app does not accept test licenses.