Infosys Microsoft Alliance and Solutions blog

« May 2009 | Main | July 2009 »

June 15, 2009

Visual Studio 2010 Beta 1 install experience

The other day I finally got to install VS 2010 Beta 1. I had decided to build a VPC for the same so as to not impact my current workstation setup. Overall the experience was pretty smooth and the setup ended without any issues, but the initial few components did cause a bit of pain.

After every component (VC 9 Runtime, VC 10 Runtime, .NET 3.5 SP1 and .NET framework 4 Beta 1), i.e. 4 of these, I had to restart the machine and it was really painful. Beyond that it completed without any more restarts.

June 12, 2009

Understanding an ERP implementation – Bridge Analogy

This is a simplistic approach of relating an ERP implementation to constructing a bridge (under Build, Operate and Transfer basis by a private contractor) due to the inherent nature of activities being the same in both the scenarios.

The making of a bridge entails site inspection to ground preparation to blueprinting ending with construction where there are tests in the intervening duration to ensure that this is safe and can serve the intended purpose without risking the lives of the users who are going to use this to go from Point A to Point B. The work is not limited to only bridge but also entails making approach roads and giving a complete end to end solution to the commuter needs.

The ERP implementation is no different! Let’s see how…

S. No.

Stage in Bridge Construction

Stage in ERP Implementation

Important Consideration

1
Ground Preparation
Project Planning

 

This is the planning phase in which the entire work plan is made, teams are organized, responsibilities given and basic discussions/groundwork is started to assess the details needed for design
The initial discussions around the scope of work, team structure, execution details and discussions, formation of teams by partner and client, objectives and outcomes expected
·Business user buy-in at client end,
·Organization readiness for change,
·Communication of objectives and expected benefits,
·Be as open as possible with partner to  help him understand the details
2
Defining Dependencies
Project Initiation 

 

Regulations, blasting controls & approvals, contractor negotiations for outsourced work, deciding on methodology of execution, identifying external dependencies
Understand the client business needs, pain points, success criteria, regulatory environment, need for 3rd parties involvement, project execution methodology (waterfall, agile, etc.), external dependencies (product vendors, add-ons ISVs, other solutions)
·Business needs and pain points must be clearly articulated and documented
·Project execution methodology once frozen need to be religiously followed
·Risks around the external dependencies need to be documented and understood by client and partner
3
Site Inspection
Scoping & Requirement Gathering

 

To see that the real scenario of the bridge site and assess the potential situations. This helps in defining accurate scope of work and arriving  a ‘good’ budgetary number
It is very important to define the scope of the ERP implementation along with the details of what all would be covered in the execution plan. This will help in arriving at a ‘good’ budgetary number which can help in budgeting for the entire project.
·Any increase in scope of work can impact project cost
·Scope delimitation and finalization is a very important part of the overall project execution
·This helps the partner to plan the execution more effectively
4
Blueprinting
Design

 

This is the phase in which the design starts and the load, span along with other design parameters are decided. This also includes incorporating affect of external (environmental) load factors like Wind, Seismic forces, flooding, etc.

 

The broad architecture, technical design and entity definition happens in this stage. There is a focus on the both functional and non-functional items along with focus on load factors like Concurrent users, time zones, transaction loads, peak load analysis, bandwidth availability, hardware needs, network detailing and interface loads
·The loads around users, transactions, network, hardware and instance strategy should be properly sized
·The need for interfaces, reports, legal formats, statutory needs, data migration elements need to be planned for development to proceed smoothly
5
Construction
Development

 

Once the design is completed with finalized parameter, we would move into actual construction. This would not be limited to construction of bridge but would also involve –
·   Strengthening the foundation where the bridge would rest
·   Making the correct road alignment for the approach roads both at approach and exit from bridge
This involves setting up the coding standards and best practices for the development Lifecycle (Strengthening the foundation), code development for the business needs (making the bridge), Building the interfaces (approach roads) and configuring the reports
·The code development should commence once the design has been finalized so that there are no reworks – which leads to delays, errors and integration issues later
·The interface details need  to be very clearly captured along with their fit into the overall design and business process
6
Testing
SIT & UAT

 

Each component of the bridge like girders, foundations, angles, connectors, rivets are tested individually and finally the entire bridge is loaded and tested as well
Each code component has to be unit tested. The final code has to undergo multiple rounds of system integration testing to see that they work together and finally the users have to conduct the User Acceptance Testing for the customizations developed.
·SIT should happen after the interfaces are built to ensure they work in a test environment
·The User test cases must be prepared by client team well in advance to ensure complete coverage of test scenario
7
Communication & Inauguration
Cutover & Go-Live

 

With the project being completed as per the defined parameters, this is the time to make it available for public to use. The general public need to be aware of the new route and need to be given ample driving directions on the approach roads as well
 
There needs to be proper user training, handholding and activities around getting the business ready for the correct usage of the application for their own benefit. The data migration and final cutover of balances to the production environment will happen here
·Cutover planning is very important and should cover timing of communication and content
·Opening balances need to be carried to new environment
·The change management aspects for the organization will yield benefit in this stage
8
Bridge Maintenance
Steady State Support

 

The bridge has to be maintained on an ongoing basis with regular maintenance along with any urgent maintenance as well which can sometime even entail stopping the flow of traffic on the bridge
Supporting the application for bug-fixes, software patch application, major and minor enhancements, database administration, user administration, application maintenance, access management, disaster recovery mechanism
·The support team should have all documentation from the project implementation
·The release of bug-fixes and enhancements should follow the complete lifecycle of development to testing before being deployed on production
·Disaster recovery mechanism should never be overlooked

June 11, 2009

WPF - Performing Conditional Validation

When we look at conditional validation needs in WPF, the typical option that people talk about is the usage of UpdateSourceTrigger property in binding expression. There are many examples that one can find on setting this to explicit and managing the validation or things like setting this to PropertyChange when validating textbox input without having to focus out of it.

However there can be scenarios where you can't use explicit since you want the normal two way binding behavior, but have a need to validate based on value of some other control. I had a similar scenario the other day where we had a combo box with yes/no options and the validation had to happen only if a value of "yes" was selected in the combo box.

The idea that I tried out was to do a trigger based binding on the textbox and enable the validation accordingly. One can easily look at setting some globaly property or pass a parameter to the validation rule and in the implementation check for the condition. But this woud mean that the validation rule still fired. I wanted to do away with this extra firing when not required.

So in the textbox, I bound it's Tag property to the combo box's Text property as below.

        <TextBox Style="{StaticResource validationStyle}" Name="textBox2" Tag="{Binding ElementName=comboBox1, Path=Text}" />

And then in the style that I had created for the textbox, I created a trigger, which would fire when the textbox's Tag property has a value of "yes". In this trigger, I applied the binding with the validation, else it was a nomal binding (without the validation). The style was defined as below

        <Style x:Key="validationStyle" TargetType="{x:Type TextBox}">

            <Setter Property="Text">

                <Setter.Value>

                    <Binding Path="Salary" Source="{StaticResource getEmployee}" />

                </Setter.Value>

            </Setter>

            <Style.Triggers>

                <Trigger Property="Tag" Value="Yes">

                    <Setter Property="Text">

                        <Setter.Value>

                            <Binding Path="Salary" Source="{StaticResource getEmployee}" UpdateSourceTrigger="PropertyChanged" >

                                <Binding.ValidationRules>

                                    <local:RangeValidationRule MinSal="1000" MaxSal="10000" />

                                </Binding.ValidationRules>

                            </Binding>

                        </Setter.Value>

                    </Setter>

                </Trigger>

            </Style.Triggers>

        </Style>

This got me the behavior I was looking for. The UpdateSourceTrigger was used to overcome the default value of lost focus for textbox, so that validation could fire as the user would be typing. There are two subtle issues though with this implementation

1. The binding expression is set again in the trigger. Ideally it should have been that i query the existing binding expression and add validation rule to it. However that would have meant that I will need to add the reverse trigger also to remove the validation rule.

2. After changing the value in the combo box to yes, the validation won't fire immediately. I had to type something in the textbox for it to work. I could handle the combo box selection changed event handler to address this.

You can welcome to try to add these behaviors and revert. Hope this helps !
 

 

 

Subscribe to this blog's feed

Follow us on

Blogger Profiles

Infosys on Twitter