TM1 Tip 1: Sorcerer’s Apprentice Rules
In TM1, the equivalent of a ‘Sorcerer’s Apprentice Link’ would be a ‘Sorcerer’s Apprentice Rule’, so I started looking for one.
On arriving at Triangle my initial assignment was to prepare a methodology for migrating from Cognos Enterprise Planning to other planning tools. This assignment was playing to my extensive experience with Cognos Enterprise Planning (EP) which IBM has announced will soon be withdrawn from support. It was therefore logical to look at ways we could assist EP customers to migrate to a different planning platform such as TM1 or Planning Analytics. In so doing I found that there were many common issues with planning tools and the migration methodology that I had initially built around EP could be easily applied to other tools like TM1
Since my early dys I have become a lot more involved in TM1 as it is IBM’s nominated successor to Enterprise Planning. I have found it to be more similar to Enterprise Planning than I originally thought.
Speaking to seasoned professionals in TM1, I was told TM1 was completely different to EP because it is based on a scripting language and ‘you can do anything you like’ with it. I remembered people doing ‘anything they liked’ with EP. It led to the creation of ‘Sorcerer’s Apprentice Links’.
In TM1, the equivalent of a ‘Sorcerer’s Apprentice Link’ would be a ‘Sorcerer’s Apprentice Rule’, so I probed deeper.
It didn’t take long to find unnecessary complexities :
Now you don’t have to be mad to decipher TM1 Rules like this but it helps.
Don’t Panic Captain Mainwaring!
My first reaction upon seeing this piece of code was to assume it was being used to establish a stable satellite orbit around Jupiter. When on closer inspection I realised it was only performing the following calculation..
# If we identify the prospect we get an incentive for identifying an opportunity and if we close the deal and sell the software we get sales incentive.
.. my mood softened to one of simple panic.
How could it possibly take so much code to solve such a simple calculation? Now if you are a TM1 Professional you may be very comfortable with this situation, but if you are a client you are probably just thinking “where’s the telephone number of the consultant?” The good news is that there is a better way.
Sort out your variables
As an Application Developer by background, when faced with nightmare code my reaction has always been to reduce a complex expression into simple ones. In this case all we need to do is separate out the variables and all will become clear viz:
vTime = ATTRS(‘Time’, ATTRS(‘Time’,!Time, ‘Prev’),’Prev’);
vInput = DB(‘Sales Opportunity Input’,!Opportunity Versions,!Opportunity,vTime,’Software’,’List Price’,’Input’);
vCustomer = ATTRS(‘Opportunity’, !Opportunity, ‘ProspectName’);
vIdenPct = DB(‘}ElementAttributes_Customer’,vCustomer,’SVI Identify %’)/100);
vSellPct = DB(‘}ElementAttributes_Customer’,vCustomer,’SVI Sell %’)/100;
vIdenQn = DB(‘}ElementAttributes_Opportunity’,!Opportunity,’SVIIdentify’);
vSellQn = DB(‘}ElementAttributes_Opportunity’,!Opportunity,’SVISell’);
The first thing a seasoned professional will tell you is “you can’t go around creating variables as they will make your cube bigger and there will be performance issues”. The Triangle philosophy is slightly different. If by making the machine work a little harder it allows people to work a lot smarter then that’s a deal worth taking.
Putting the client back in control of the TM1 software
Having considered the pain, let’s now look at the gain as the calculation reduces to:
# If we identify the prospect we get Identify commission. If we sell the prospect we get Sell commission.
If(vIdentQn @= ‘Y’, vInput*vIdenPct + If(vSellQn @= ‘Y’, vInput*vSellPct,0), If(vSellQn @= ‘Y’, vInput*vSellPct,0));
Upon seeing the now readable calculation, the client says:
“Wait a minute that’s wrong – I wanted the Identify and Sell commissions calculated separately and then added together”
Like this perhaps?
If(vIdenQn @= ‘Y’, vInput*vIdenPct , 0) + If(vSellQn @= ‘Y’, vInput*vSellPct , 0);
Simple. Save money by;
• Accepting a tiny hit on performance complex calculations can be greatly simplified.
• Keeping things simple pays dividends in cash.
• In most planning projects the biggest consumer of consulting days is UAT.
• Simple calculations get through UAT faster than complex ones.
• That saves you money.
Sign up and never miss a blog post from Triangle