Vue Software

Archive for the 'Technical Tips' Category

Stick to a Naming Convention - It’s not Rocket Science!

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Wikipedia has one of the best definitions on the net for a “naming convention”: A naming convention is a convention for naming things. Awesome!

In the Enterprise Incentive Management and Sales Performance Management world, this means naming all plan objects in a consistent way. Naming will vary from tool to tool and there is not a single set of best practices that can be followed. Most vendors provide some recommendations, but it’s up to the implementers to decide which naming format will be used. Since there is no generally accepted “convention”, it may be more accurate to call this a naming strategy.
Why is sticking to a naming strategy important:
Incentive Compensation Management is not difficult. What makes ICM systems complex is the volume of plan elements (plans, rules, formulas, tables, variables, etc..) A large implementation can quickly become a jungle if not everybody agrees on a common way of naming different objects. Not only will it make building and testing the system easier, a good naming strategy will especially be important once the original implementation team is gone and others have to understand the logic of the system. Finally, aside from clarity, a naming strategy will also help search for plan components more efficiently.
Choosing a naming strategy
As I said, since all applications do not share the same objects, and also because each application works differently, I cannot provide a silver bullet for all situations.
Generally, I try to stick to these principles:
  • Make the name descriptive
  • Use abbreviations to identify object type
  • Begin object name with its object type abbreviation

For example, a credit rule could be called CR_AE_description. Some systems could have a direct credit rule and an indirect credit rule; in such case my abbreviation could be DC and IC instead. In some systems I may want to prefix a formula with F (if all objects can be displayed in the same view), if not, then it would not be necessary to explicitly say that a formula is a formula.

Naming of output is also important: The importance of naming an object may be obvious, but in the case of rules, the output of such rule should also be named carefully. A result name that makes sense can often by “Rule name _ result” or something similar.

Getting Started…

It is important to define a naming strategy early on in the project - before any detailed / technical design documents are created. The strategy should be illustrated on one page to enable the implementers to quickly see how to name the different objects. This “page” should be distributed to everyone involved in the implementation and be given to new joiners as well.

The first steps in defining the naming strategy is to find out if the application being used has a set of best naming practices or standards. In the case of an upgrade, it is important to stick to previously used naming strategy.

Happy Naming!

Tags: , , ,

Related Posts:
World at Work Total Rewards Conference & Exhibition
For Love or Money: Social vs Monetary Reward

EIM Solution Maintainability - Should you care about this?

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

People often consider buying an Enterprise Incentive Management (EIM) solution based on several criteria including cost, performance, ease of implementation, support, etc. One factor that if often overlooked in my opinion is the system’s maintainability.

What is Maintainability?
ISO 9126 defines maintainability as the ease with which a software product can be modified in order to:
  • correct defects
  • meet new requirements
  • make future maintenance easier, or
  • cope with a changed environment

Why is Maintainability important?

The ability to modify a software system is obviously important for any type of system, but it is particularly important for an EIM solution. Why? Because compensation plans, organizational data, quotas, etc typically change at least once a year. Modifying this information is not a task equally easy to perform in all software packages.

How to find out if a EIM solution is maintainable?

Any vendor will say their solution is maintainable… only an opinion from an unbiased person with experience implementing the particular EIM solution will be able to give a true account of how easy it is to maintain the application.

Effective dating plays a big role in maintainability. Being able to modify the information at anytime, but with changes effective only at a certain date, is critical to maintain a system.

Another key aspect of maintainability to consider the impact of year end on the plans. Some of the important information to find out is:

  • Are the plans still going to work at year end?
  • If plans need to be modified, how big of a change is it?
  • How easy is it to modify the quotas?
  • What about the rate / lookup tables?
  • If formulas are embeded within the tables, do those need to be modified as well?
  • How easy is it to move people in different positions?
  • What do I do when people leave the company?

It is not atypical to see a somewhat complex logic which could be impacted by a simple change. For example, a formula referencing a table which contains another formula pointing to a quota. If the quota values can just be updated, it’s not a big deal. If a new quota needs to be created, then the formula will also need to be updated to reflect the new quota.

Another example is when an EIM solution needs to be able to handle last year’s orders at last year’s rates. Depending on the system, this could mean creating new rules, new formulas, new tables, new quotas, etc.

It may not all be about the Product

Implementing a software package is a bit like custom development. A quality architecture results in the possibility to re-use components. Some programming languages are easier to maintain than others; as we discussed, the same goes for EIM solutions. However, no matter how good a programming language, a bad programmer can make the maintenance a nightmare. A bad EIM implementation team can also make the system’s maintenance very hard, no matter how good the product is.

The bottom line:

Finding out the details about how maintainable an EIM solution is, is as important as finding out other characteristics such as how easy it is to implement it. You do not want to have to re-implement every plan every year; not only because it is time consuming, but also because major changes imply bigger risks.

The first part of the battle is to select an EIM solution which will make maintenance as painless as possible, but the battle is not won until the solution has been implemented properly.

Tags: , , , , , ,

Related Posts:
SaaS – Future or Buzz?
Anonymous Incentive Compensation Vendors Webinar

Fix your Compensation Data in One Click

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

No matter how good and sophisticated an Incentive Compensation Management application we implement, it looks like we always fall back on Excel for something, from data verification and validation to batch order staging.

A few weeks ago, I wrote a quick article on how to use TextPad to make vertical selections. From the comments I received, transforming raw data seems to be a major preoccupation shared by many. Several years ago I created an Excel Macro (a set of instructions to perform some task in Excel) to traverse a speadsheet, validate its data, and transform it into a certain format. Recently I had to dig it up to clean up some mainframe files. Today I modified it and applied it to the Xactly Order Upload Template to demonstrate how macros can be used.

First, download my order upload staging spreadsheet. When you open it, you will see something like the following image plus several columns. The data is intentionally incorrect.

After executing my Macro, the spreadsheet will look like this:


The macro validates one row at the time. When there are anomalies, the cell is highlighted in red. The content of some “incorrect” cells are originally in bold for you to look more closely at what will happen. You will also notice that some data will be corrected.

Here are the actions performed by the macro for each row:
  • First, position the active cell to the first row and check if the mandatory Order Code is present. If this is the case, if it is in the proper format (2 upper-case letters followed by 3 digits in this example).
  • Check if the Item Code is an alphanumerical value (only digits and letters allowed)
  • Verify that the “Quantity” field is not null.
  • Check to see if the “Amount” field only contains an amount (digits, “-” and “.”) - I could write something more complex to make sure I don’t get records like: “22-..2″.
  • Verify that the Unit type is allowed. I hardcoded a check for “USD”.
  • Check that the incentive date is actually in an Excel date format. Remember that it needs to be setup as mm/dd/yyyy for the Xactly upload.
  • Verify that the split amount sums up to 100%. I also make sure that if a 2nd split amount is entered, that the associated second employee ID is entered.
  • Lookup the “Amounts” column again, verify if there are numbers with the minus sign at the end of the number (2.0-), and transform it into the proper format (-2.0). I often get this problem when importing data from raw text files.
  • Finally, verify that the incentive date is unique for every row.

All these steps will only take a few seconds to execute for several hundred rows.

How to Run my Macro

  • Download this spreadsheet to your computer
  • Click on Tools->Macros->Macro (Alt-F8 to be quicker)
  • Select “editFile” (that’s the name of my macro) and click on “Run”
  • Tada! Your errors should now be highlighted in red.
  • Correct the errors, remove the red-fill color and run the macro again if you want to verify your corrections.
How to Modify the Macro
If you are thinking that this spreadsheet is useless for your situation, you are right. The odds for your Order Codes to be exactly in the format xx999 are pretty slim. That’s why I commented the code and made it as clear as possible.

To view the Macro, you only need to click on Tools->Macros->Visual Basic Editor. You will be able to see what code does what by reading my comments. You should be able to easily modify it, even without deep technical skills, and try out your changes. You just need to edit the code, save it, click on your spreadsheet, and run the new macro (Alt-F8). If you break it, you can re-download it.

In a few cases I use regular expressions (regex), which can be a bit complicated and tricky. Fortunatly they are popular and you may be able to find one online that does exactly what you want. If you are curious and want to learn more about regex, this website is a good place to get started.

I hope this example will be useful, and I will be glad to answer your specific questions if you have any.

Tags: ,

Related Posts:
ICM Testing - Reviewing Results - Part 4
Accord/Loma Insurance Systems Forum

SAS70 Audit for On-Demand Sales Performance Applications

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

There are tons of resources about SAS70 and Sarbanes-Oxley on the web.

In a nutshell, SAS 70 is a Statement on Auditing Standards (SAS) for service organizations, developed by the American Institute of Certified Public Accountants (AICPA). It demonstrates that a firm has proper controls and processes to protect the data belonging to their customers (very important!). The SAS 70 report is issued by an independent auditing firm and includes the auditor’s opinion on the service organization’s controls. A SAS 70 report is particularly important since it is the preferred method of providing assurance for service organization clients subject to Sarbanes-Oxley Section 404.

These days, service organizations enjoy talking about their Type I and Type II SAS 70 reports when it comes to marketing their applications. A type I report includes the auditor’s opinion regarding to which extent the organization represents its controls, and their description. A type II report includes all the info in the type I report, plus the auditor’s opinion on how effective the controls are during a defined period.

This being said, according to the SAS 70 website and other online resources, “SAS 70 does not specify a pre-determined set of control objectives or control activities that service organizations must achieve”. This means that customers need to review the disclosed controls and ensure they are sufficient to meet their objectives and their own auditor’s requirements. It also means that a SAS 70 report does not guarantee data security.

More detailed information about SAS70 can be found on the SAS 70 website, on Wikipedia and from Deloitte.

How do Sales Performance Management Systems Stack Up?
As I mentioned above, since SAS 70 does not prescribe which controls should be used, it is not possible to compare SPM / EIM vendors. However I tried to find as much information as possible with respect to SAS 70 certification for every vendor.

Callidus

SAS 70 Type: “Meets SAS-70 compliance”
Controls: N/A
Sources: Link 1
Comments:  

Centive

SAS 70 Type: Type II
Controls: N/A
Sources: Link 1
Comments: Completed January 2008

EIM Software

SAS 70 Type: “Guaranteed SAS-70 compliance”
Controls: N/A
Sources: Link 1
Comments:  

SalesForce.com

SAS 70 Type: Type II
Controls: N/A
Sources: Link 1
Comments: The article dates from 2004

Synygy

SAS 70 Type: “Completed SAS Audit”
Controls: N/A
Sources: Link 1
Comments:  

Varicent

SAS 70 Type: N/A
Controls: N/A
Sources: Link 1
Comments: SAS70 Type II data center

Xactly

SAS 70 Type: Type I
Controls: Full redundancy throughout the production infrastructure, regular security patch updates, on-going evaluation of potential security threats
Sources: Link 1 Link 2
Comments: SAS70 Type II data center

Tags: , , , , , , ,

Related Posts:
The Surge of On-Demand (SaaS) Incentive Applications
On-Demand vs On-Premise vs Hosted SPM Solutions; pros and cons

On to Optimizing Business Rules, Territories/Regions, Filters, Conditions, etc.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

So you implemented this brand new ICM system, but the application takes forever to run the batch jobs. While you are waiting for the compensation results, you are pulling your hair out, trying to think about a way to make the system run more quickly.

There are many advanced tricks to optimize sales compensation system performance, but here is a very quick and easy way to (sometimes) make the transaction processing run more quickly. It’s far from being a ground-breaking method, but it is often overlooked.

Business logic uses Boolean logic; it consists of conditions, separated by “AND” and “OR”, with a few sprinkled brackets. The order in which the elements are being evaluated is critical for the batch performance. The application will usually “read’ the equation from left to right.

For example, if we check that CONDITION A OR CONDITION B are true, the application will try to find out if CONDITION A is true, and if it can’t find what it’s looking for, it will move on to see if CONDITION B is true.

Optimizing OR
This means that when using an OR expression, it is preferable to try to put the condition the most likely to be true first. In this example, if CONDITION A is true, the application will not even need to check if CONDITION B is true.

Optimizing AND
For an AND expression, it works the other way around. Since both conditions need to be true, it is much preferable to put the condition the most likely to be false first.

Of course, to be able to achieve good results with this method, it is important to know if each condition is more likely to be true or false… it is also important for this likelihood to be as disproportionate as possible.

And putting Or and And Together:
Here is a slightly more complex example just to put in practice what I’m describing. If we are checking that CONDITION A is true, or that CONDITION B AND CONDITION C are true.
A OR (B AND C)

I would write the logic in this way if A was very likely to be true. Otherwise I would write the rule as (B AND C) OR A. I would further tweak this formula if I knew the likelihood of B and C to be false.

This is a bit confusing at first, but it will make complete sense with some practice.

Tags: ,

Related Posts:
ICM Test Planning, Scenarios and Templates - Part 3
Webinar: Demystifying the Complexity of Sales Performance Management – Business vs Technology

Editing Fixed Field Length Compensation Text Files, Reports and Mainframe Files

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Today my client asked me if I could take the content of an Excel spreadsheet, and export it to a text file in a very specific format. It needed to follow this format to be imported and interpreted properly by other applications. I said the task would be done quickly, before realizing that the spreadsheet had about 10,000 rows, containing complex sales transaction and compensation information which would need to be edited significantly.

When dealing with fixed field length formatted text files, text reports and mainframe files, it seems common that we need to edit something. For example it could be an ID which changed format from 8 to 9 digits and requiring a leading ‘0′. It could also be fields need to be moved around in the file.

To avoid some headaches and save a lot of time, do yourself a favor and download TextPad. TextPad is a simple (FREE) text editor for Windows which allows you to perform simple but powerful tasks.

TextPad offers th TextPad allows you to do vertical selections.

The image below illustrates what I mean by vertical selection.


By holding down the “Alt” key, and performing a “Click and Drag” just like when selecting text from left to right, you can select text from top to bottom.

As I said, I could select the entire Last Name “column” in this fashion, cut it, and paste it before the First Name “column”. I could also select the first character of the first column and delete them entirely. Finally, if I needed the ID here to be 8 digits intead of 5, I could add manually the missing zeros, copy a few rows of those zeros by using the vertical section, and paste them before the location in which you want them to appear.

Again just to illustrate this these would be the steps to insert characters before a column:

  • Insert manually the zeros for a few rows

  • Select the zeros using the vertical selection method

  • Click on copy or press “ctrl-c”
  • Place the cursor where the new “column” will appear (in this case just before ID 0070)
  • Click on paste or press “ctrl-v”

As you can see, the 2 following rows following 0000017 and 0000023 get the coped “000″ appended to them.

That’s all there is to this trick, but hopefully it can, as it did for me, save you countless hours of editing large compensation files row-by-row.

Tags: , ,

Related Posts:
No Version Control? Now what?!
Fix your Compensation Data in One Click