Wednesday 28 January 2015

An overview of SAP

SAP AG is a German company which provides end to end solution for several business application including manufacturing, logistics, accounting, sales & distribution etc. It is one of the largest software companies stands for Systems, Applications & Products in Data Processing. SAP has developed several independent products for various industries but they are best known for their ERP software, SAP BW, SAP Business Objects and SAP HANA.

SAP has various modules available in the market and are divided into three main groups
  1. Functional modules
  2. Technical modules
  3. Industry specific modules
Functional Module:  It consists of pre-populated functional packages that take care of almost all the functions in place in an organization. Each module takes care on its own task and is linked to other module wherever applicable. For instance, a billing transaction of sales will pass through inventory management for goods sold and accounting for account receivable. SAP has typically focused on best practice methodologies for driving its software processes. Following are some key functional modules which are widely used in most of the organization.
  1. SAP CRM Module: SAP CRM is a part of SAP business suite which helps to implement customized business processes that can be integrated to other SAP and non-SAP systems. SAP CRM helps an organization to stay connected to their customers and achieve customer expectations with the types of services and products they needs.
  2. SAP FI Module: SAP Financial module enables organization to track all financial data of multiple companies in different languages, currencies in one centralized location.
  3. SAP HR Module: Human Resources component enable companies to process employee related data according to business requirements in most effective manner.  The HR module uses a system where data grouped together called info types and represent complete employee information in required formats.
Technical Modules: Technical module is more of programming and coding stuff. Using technical module one can customize existing functional module of SAP as per the workflow of the organization if required.
  1. ABAP Module: ABAP stands for Advanced Business Application Programming and is a high-level programming language used for developing application for SAP R/3 System. Using ABAP user can create own customized functional modules and function groups as per the requirement using Function Builder in the ABAP Workbench.
  2. BI Module: This module helps in data analysis to get some information out of it. This will helps organization to boost business performance by helping management executives to make more informed decisions.
  3. Basis Module: Basis is a set of middleware programs and tools from SAP and is used to manage large corporations. SAP provides the underlying base (thus the name) that enables applications (such as FI, CO, and SD, for example) to be interoperable and portable across operating systems and database products.
Industry Modules: This module provides customized tailored solutions for midsized enterprises. Over the years, SAP has created twenty-eight industry-specific products offering customers a mass of expertise, along with information technology (IT) solutions particular to their respective industries. Following are some of the popular industry specific modules which are used worldwide.
  1. Aerospace & Defense – Air and military industries
  2. SAP IS Automotive – Automobile manufacturing industries
  3. SAP IS Banking – Banking, and Market Risk Management
  4. SAP IS Chemicals – Chemical industries
  5. SAP IS Consumer Products – Consumer product industries
  6. SAP IS Healthcare – Hospitals and healthcare institutions
  7. SAP IS Insurance – Insurance companies and Currency Markets
  8. SAP IS Media – Communication and Publishing industries
  9. SAP IS Oil & Gas – Oil and Gas Industries
  10. SAP IS Telecommunications – Telecommunication operators
Apart from above we have discussed, SAP AG has many modules and sub modules that provide end to end solutions for various business enterprises. SAP AG is continues to create new modules and solutions for emerging business environments all the time.

About Author:
Harish Mani is senior consultant and is important part of Systems Plus Pvt. Ltd. think Tank. He in Systems Plus actively contributes to technology and information security. He can be contacted atharish.m@spluspl.com

SQL SERVER –TRY…CATCH and ERROR HANDLING

Like in most modern programming languages, you put your code in the TRY block and you check for the errors in the CATCH block. TRY/CATCH helps to write logic separate the action and error handling code. The code meant for the action is enclosed in the TRY block and the code for error handling is enclosed in the CATCH block. In case the code within the TRY block fails, the control automatically jumps to the CATCH block, letting the transaction roll back and resume execution. In addition to this, the CATCH block captures and provides error information that shows you the ID, message text, state, severity and transaction state of an error.

Functions to be used in CATCH block are :

  • ERROR_NUMBER: returns the error number, and is the same value of @@ERROR.
  • ERROR_SEVERITY: returns the severity level of the error that invoked the CATCH block.
  • ERROR_STATE: returns the state number of the error.
  • ERROR_LINE: returns the line number where the error occurred.
  • ERROR_PROCEDURE: returns the name of the stored procedure or trigger for which the error occurred.
  • ERROR_MESSAGE: returns the full message text of the error. The text includes the values supplied for any substitutable parameters, such as lengths, object names, or times.

Limitation of  TRY…CATCH:

  • A TRY block must be followed immediately by a CATCH block.
  • TRY…CATCH constructs can be nested, which means that TRY…CATCH constructs can be placed inside other TRY and CATCH blocks. When an error occurs within a nested TRY block, program control is transferred to the CATCH block associated with the nested TRY block.
  • To handle an error that occurs within a given CATCH block, write a TRY…...CATCH block within the specified CATCH block.
  • Errors with a severity of 20 or higher that cause the Database Engine to terminate the connection will not be handled by the TRY…CATCH block. However, TRY…CATCH will handle errors with a severity of 20 or higher as long as the connection is not terminated.
  • Errors with a severity of 10 or lower are considered warnings or informational messages, and are not handled by TRY…CATCH blocks.
  • Try & Catch block will work for Errors with a severity of 10 < TRY & Block <= Errors with a severity of 20.
  • GOTO statements cannot be used to enter a TRY or CATCH block. GOTO statements can be used to jump to a label inside the same TRY or CATCH block or to leave a TRY or CATCH block.

Example:


Using TRY…CATCH in a transaction:


About Author:
Riddhi Solanki is enthusiast .net developer who works as associate consultant with Systems Plus Pvt. Ltd. She in free time reads and write on various web technologies. She can be contacted at:riddhi.solanki@spluspl.com

Importance of Communication in Project Management!

The most important role of a project manager is to make sure that the projects under his administration are finished on time and within budget. Business analysis involves documenting user requirements, developing and testing systems. Big companies may allow business analyst to work together with project managers, but in medium and small businesses, business analyst may have to take on project management responsibilities.


Above are the few important aspects of business analysis. I will be focusing on communication aspect which acts as a lifeline of any project.

Communication

A project is nothing but a set of events carried out to achieve a single goal and in order to achieve that goal it requires people who can lead the project and people who can execute the necessary events. Generally project managers complain that most of project time goes in communication. As a project manager, one should never think that communication is a waste of efforts.

Communication is very crucial for the success of any project and it becomes a bit difficult when there is an involvement of lot of people in some way or the other in the project. There will be certain things which customers would need to know, certain things that the business users would require, and the list goes on.Let me explain the above statement through an example. A project team of 10 members will find it easy to share updates with one another but if the size of the team is 200, it becomes harder to maintain successful communication with one another.

Also if the communication with clients is not clear at the start of the project, then later all the efforts taken in the project might go in vain. At the start of the project the customer tells you what he needs and this generally happens over a call or email. The project manager along with his team analyses and documents the requirements.Getting the exact requirements solves a major hurdle in the entire process. Requirements if not communicated properly or project started with wrong specifications can result in the waste of time and efforts taken in the process.

Communication can generally be done in the form of reports, notes and follow-ups with customers, business users and others in the company but emails is one form which is mostly used for communication with clients or with people involved in the project. One can email or access to emails whenever and wherever required without any risk involved.

Clear communication helps in aligning the right expectations, impelling people to take correct actions, negotiating agreements favourable to both customers and organisation. It also helps in briefing and recognising the steps needed further in the project.

Communication process is a five step process:

1. Recognize Stakeholders
It is important to understand who the stakeholders are. A project might involve multiple suppliers, business heads and lot of other people directly or indirectly involved in the process.

2. Strategize Communications
You need to know who is required to be informed or referred but what finishes the series is the kind of communication a participant is supposed to know, and the occurrences. It would be a part of the project communication plan. For instance, a dealer might not be involved in knowing whattechnology the project team is using but might be keen to comprehend the business he acquires, which might be insignificant to a person who produces technical documents.

3. Communicate
Once done with the recognizing customers and people involved and having finalized the plan, the only thing left is executing the plan. Execution process can be carried out through emails, calls, meetings, and so on.

4. Achieve Customers expectations
Meeting stakeholders’ expectations successfully is something achieved by a very few people. The whole idea is not to document the requirementson paper and attain them at a later time but to set the expectations on whether a particular thing or a requirement can be achieved at the time and price estimated.

5. Evaluate Performance
How can a manager comprehend whether the project undertaken is succeeding or not? Whether the project is on right roadway and within financial plan? Reports give stakeholders the asset to appraise the performance of the project and make changes in the process if vital. Assessment procedure helps in understanding what is requisite and what is not. What can enhance value to your project and what cannot.

Communication is imperative to the successful completion of a business project and delivering it to the standards of customer’s requirements. It gives a clear picture of the roles and responsibilities to all stakeholders and channelizes the resources towards the goal and results in higher efficiency.

About Author:

Nisha Bhatt is a consultant in Systems Plus Pvt. Ltd. Within Systems Plus, she actively contributes to the areas of Technology and Information Security. She can be contacted at: nisha.bhatt@spluspl.com




Gathering Requirements Virtually – Making the curse a Boon!

It’s always exciting to think about going onsite, even though your client may be in the next building from your office.  As IT professionals we are trained to think that way. Now imagine the disappointment when we are told – Due to some reason (mostly budget constraints) we need not go onsite, but gather requirements virtually.

Virtual communication is a key requirement in today’s time! Most of the businesses use Phones, IMs or Emails to gather requirements. Otherwise as well I am sure there are times we drop emails to someone sitting on the other floor instead to talking face to face with them. We often hear people saying that there was a communication gap. Hence when we use virtual communication, it is essential to use it effectively. And the way to make sure it’s done effectively is to ensure we have taken proper feedback.

Let’s look at some ways we can use to make this tough process a little easier:

1. Right & Few Stakeholders:


The very first step to gathering requirement correctly –Virtually or physically - is involving the correct stakeholders and in the right number. If the wrong people are involved the quality of the requirements will not be accurate. Whereas, if too many people are involved there will be that many opinions and dis-agreements. “Too many cooks spoil the broth” is a very old saying that is applicable here.

2. Try to Visualize 


When communicating virtually – the most difficult constraint to overcome is conveying thoughts to the client. Using examples, wireframes, and flow charts can help the client in better understanding. Hence whenever possible use tools like Skype – Screen sharing, join-me, Lync – with which you and the client can be on the same page.

3. Send MOMs



Minutes of Meeting (MOM) typically describe the events of the meeting, starting with a list of attendees, a statement of the issues considered by the participants, and related responses or decisions for the issues. To ensure that all the stakeholders are on the same page it is essential to send accurate and precise minutes of meeting.

4. Go step by step


Imagine the burden of carrying 10 kg of books to school at once or being given the option to carry 2 kg every day. It is better to split the requirements in smaller part and gain clarity on one point and then move to the next one.

Despite the dread and pain, the need for effective virtual collaboration is increasing. Even in small to mid-sized organizations, it’s rare to find all stakeholders sitting in the same building or even in the same city. Eventually interacting virtually is going to take over face-to-face communication sooner or later. It is important to accept this really and turn the virtual interaction into effective interaction.

About Author:
Shweta Samudra is a consultant in Systems Plus Pvt. Ltd. Within Systems Plus, she actively contributes to the areas of Technology and Information Security. She can be contacted at: shweta.samudra@spluspl.com

Thursday 15 January 2015

Cost Estimation: Important aspect in Project Management

It is generally observed that while working on Project Management, Project Manager often focuses on Time (Schedule) and quality (Deliverables) than that on the costs. Every project has a budget and client expects a product according to that budget. If we have budget of 3 Lac to buy a car, we expect car like Alto and not BMW. And if dealer gives us BMW in that price (for say X reason); we may be happy at that point but happiness will be short liven when it comes to maintain the car. Same is with the project; Project manager must ensure that Project is completed within given costs expected/committed to the users. This makes cost estimation very important task for the project manager.

In this blog my aim is just to provide high level overview of cost estimation techniques


Analogous Estimates:
·     As the name estimates, Analogous estimate technique a cost is estimated based on the “Expert Judgment”. The expert judgment can be based on some similar project by performing company, Project done by competitor or other such “Historical” sources.
·        Such cost estimates generally are used during Project Initiation.

Advantages
Disadvantages
·         Quickest approach for Estimation.
·         Helps in determining Budget for the Project at the start without having detailed requirements.
·         Helps in checking the feasibility by comparing Project costs with the business objective (Expected Returns) whether the organization should go ahead with the project or terminate the idea.
·         This method does not use any scientific techniques for cost estimation hence the estimates are not accurate.


Gut – Feel Estimate
·         This estimation technique is similar to the Analogous technique but is used at the Activity level.
·         Activity is the smallest action that need to be performed and team estimates costs for the same by “their” Judgment; hence the name gut-feeling.
·         This technique is used in the Planning Stage.

Advantages
Disadvantages
·         Quickest approach for estimation at the Activity level.

·         This method does not use any scientific techniques for cost estimation hence the estimates are not accurate.


Parametric Estimates:
·         It is an estimating technique that uses a statistical relationship between historical data and other variables (for example, square footage in construction, lines of code in software development) to calculate costs estimates.
·         It is done at Activity level/Task level and is used in Planning Stage
·         The estimation from Parametric estimates is most AccuRate

Advantages
Disadvantages
·         Use scientific methods/ Models hence most accurate estimates

·         Requires more efforts to obtain the estimates.
·         Can be used only when we are fully certain about the tasks/activities.


3 Point / PERT Estimates:
·      This estimation technique is used when we have uncertainties regarding tasks for which costs need to be estimated.
·        It uses 3 points as name suggests for estimation: Optimistic conditions; Moderate Conditions; Pessimistic conditions. Estimates for all three conditions are used to calculate PERT estimates.
E.g:  Wall is to be painted by “New” type of paint. Normal paint requires USD100.
Optimistic: This will behave as normal paint so USD 100
Pessimistic: The paint will behave altogether different and require special effort. So estimating 500 USD.
Moderate: It will behave mostly like normal paint but being new might require little extra cost. So estimating 250 USD.
·         What should be our cost estimation as PM? 100? 500? Or 250?
·         This can be founded by PERT as; Estimate = (O + 4M + P)/6 = (100 + 1000 + 500)/6 = USD 267

Advantages
Disadvantages
·         Can be used when PM has many uncertainties related to task/activities.
·         68.26% chances are that the estimate will be close to the PERT estimated value.

·         The estimates obtained from this technique is not most accurate.


Effective and correct use of cost estimation technique by Project Manager will help him to manage Costs effectively across the project.

About Author:
Saurabh Kane is a consultant in Systems Plus Pvt. Ltd. Within Systems Plus, he actively contributes to the areas of Technology and Information Security. He can be contacted at: saurabh.k@spluspl.com

SharePoint 2013: Claims Encoding

SharePoint 2013 display identity claims with the following encoding format:
  • <IdentityClaim>:0<ClaimType><ClaimValueType><AuthMode>|<OriginalIssuer (optional)>|<ClaimValue>
  • For e.g.  à i:0#.w|<Domain Name>\<userid>
Where:
  • <IdentityClaim> indicates the type of claim and is the following:
    • “i” for an identity claim
    • “c” for any other claim
  • <ClaimType> indicates the format for the claim value and is the following:
    • “#” for a user logon name
    • “.” for  an anonymous user
    • “5” for an email address
    • “!” for an identity provider
    • “+” for a Group security identifier (SID)
    • “-“ for a role
    • “%” for a farm ID
    • “?” for a name identifier
    • "\" for a private personal identifier (PPID)
    • "e" for a user principal name (UPN)
  • <ClaimValueType> indicates the type of formatting for the claim value and is the following:
    • “.” for a string
    • “+” for an RFC 822-formatted name
  • <AuthMode> indicates the type of authentication used to obtain the identity claim and is the following:
    • “w” for Windows claims (no original issuer)
    • “s” for the local SharePoint security token service (STS) (no original issuer)
    • “t” for a trusted issuer
    • “m” for a membership issuer
    • “r” for a role provider issuer
    • “f” for forms-based authentication
    • “c” for a claim provider
  • <OriginalIssuer> indicates the original issuer of the claim.
  • <ClaimValueType> indicates the value of the claim in the <ClaimType> format.
The image below shows how claims are encoded in SharePoint 2013.


Here are some examples:

Type of claim
Encoded claim
Claim encoding breakdown
Windows User
i:0#.w|<Domain name>\<UserID>
  • “i” for an identity claim
  • “#” for the user logon name  format for the claim value
  • “.” for a string
  • “w” for Windows claims
  • “<Domain name>\<UserID>” for the identity claim value (the Windows account name)
Windows Authenticated Users group
c:0!.s|windows
  • “c” for a claim other than        identity
  • “!” for an identity provider
  • “.” for a string
  • “s” for the local SharePoint STS
  • “windows” for the Windows Authenticated Users group
SAML authentication (Trusted User)
i:05.t|adfs|userID@domain.com
  • “i” for an identity claim
  • “5” for the email address        format for the claim value
  • “.” for a string
  • “t” for a trusted issuer
  • “adfs” identifies the original issuer of the identity claim
  • “userID@domain.com” for the identity claim value
Forms-based authentication
i:0#.f|mymembershipprovider|userid
  • “i” for an identity claim
  • “#”for the user logon name  format for the claim value
  • “.” for string
  • “f” for forms-based authentication
  • “mymembershipprovider” identifies the original issuer of the identity claim
  • “userid” for the user logon name


This change means that your userid would look something like this:
i:0#.w|<Domain Name>\<userid>

Instead of this:
<Domain Name>\<userid>

Sometimes when calling other services, you need the windows userid and not the claim userid.  So for these instances, I’ve created a few helper methods.

public const string CLAIMS_REGEX = @"(?<IdentityClaim>[ic])?:?0(?<ClaimType>[#\.5\!\+\-%?\\])(?<ClaimValueType>[\.\+])(?<AuthMode>[wstmrfc])(\|(?<OriginalIssuer>[^\|]*))?(\|(?<ClaimValue>.*))";
public static string GetAdUserIdForClaim(string login)
 {
     string userName = login;
foreach (Match m in Regex.Matches(login, CLAIMS_REGEX, RegexOptions.IgnoreCase))
{
      try
       {
       if (m.Groups["AuthMode"].Captures[0].Value.ToLower() == "w") // Base on your Requirement change authentication    mode[authentication mode:-> wstmrfc].
         {
           userName = m.Groups["ClaimValue"].Captures[0].Value;
         }
       }
      catch { }
      }
return userName;
}

About Author:
Sameer Kothari works in Systems Plus and actively contributes to technology. To read more interesting articles from him, please follow:  http://samk2010.blogspot.in/