Monday, April 23, 2007

The Future of CRM

I attended one of Oracle's 'Ask the Experts' seminars on CRM strategy last week, not some thing we often have the time to do, but worth doing for an insight into what makes Oracle tick, and more importantly to meet some real people, many of whom at this particular event were not existing Oracle customers.

The first speaker was a research VP from Gartner, he offered some interesting feedback from their research, most of which should cheer up those of us in the business of configuring CRM apps. Generally speaking they have found there are still plenty of sizable organisations who have still to invest in a CRM solution providing a Single Customer View (the holy grail of CRM).
Their headline statement 'CRM is back in a big way' underlines this, however he went on to say that the majority of current projects are upgrades or reviews adding additional functionality or enhancing existing capabilities.

Marketing, sales and customer service are top of the list of areas perceived most likely to benefit from CRM investment, but it's clear that there are still reservations amongst top level management about the tangible benefits of this investment, and how to measure this. Thankfully, on average Analytics is rated third priority across all three of these areas, usually behind increasing customer satisfaction and improving cross selling opportunities. So more good news for those of us in the analytics business.

However, the flip side to all this optimism is that Gartner predict that by 2009 50% of new investment in this area will be in SaaS, or Software as a Service, also very interesting was the observation that some projects may be delayed until 2008, as purchasers wait for the current round of new releases to settle down and prove themselves.

Next up was Oracle's Sales Consulting Director who had a huge number of slides in his presentation explaining Oracle's current CRM strategy, I got the impression from questions asked by the floor, that this is what prospective purchasers, and some who bought Oracle CRM products pre the Siebel merger, were really interested in. The huge amount of information delivered was quite overwhelming as they tried to encompass JD Edwards, PeopleSoft and Siebel users to make all feel welcome, without making existing Oracle customers feel they might now have a second tier product. In practice the future is Oracle Fusion, a suite of middleware apps to link together all the products now in the Oracle stable, this should allow relatively seem less integration of for example analytics, with any of the CRM/ERP apps offered, with Oracle undertaking to develop these apps in parallel and not force upgrades or conversions on any customer, for Siebel the future 8.1 and 8.2 releases are said to be in the pipeline already.
As reassurance for Siebel users Oracle are using Siebel internally now, with Siebel Contact Centre underpinning the Oracle support team.

Next, a very nice lady from Irish Life, Ireland's biggest life assurance company, gave an interesting presentation on their experiences implementing Siebel, originally a very customised version 6, and currently an upgrade to 7.8, which will now be around 90% vanilla Siebel. The message being that they learned their lesson, and some times less really is more.

So finally we got to the demonstration of Siebel 8, unfortunately time was against us and rumbling tums could be heard, new features include Full System Search, Embedded Analytics, Electronic Signature Capture for mobile clients, task based UIs and a plain English rules engine to aid workflow and control data input.
Then there was a stampeed to the buffet!

Thursday, April 12, 2007

Init Blocks, init.

That's repository variable Initialization Blocks to you. Init blocks as they are more commomnly known retrieve the data that is held in memory by the Session and Repository variables associated with them. They are of course accessed through Manage>Variables in the Administration console, and this is another area where subtle changes have been made for Oracle BIEE, to add a new init block open the Variable Manager, click Initialization Blocks and then right click in the righ pane or choose Action>New>Repository>Initialization Block.




Then the configuration itself, no more tabs, one form with buttons.






Edit Data Source button gives access
to further options.

Edit Data Target launches what used to be on the Variables tab, click here to name your variables.

Anyway, enough pictures, click on Edit Data Source to reveal the Init Block form where you will compose the initialization String, aka the SQL. You can now select db specific SQL if you wish, and now is also the time to Browse for your connection pool.

Oracle has two functions for returning the current date, SYSDATE and CURRENT_DATE, both should be selected from system dummy table DUAL, as this will always return only one row, sysdate returns the current date on the server.

You can convert to and from datetime types using the following functions;
TO_CHAR ({datetime| interval}, format)
TO_DATE (string, format)
TO_TIMESTAMP (string, format) (Oracle 10g onwards)

To return a specific element of the current date use the EXTRACT function;

SELECT EXTRACT({Second|Minute|Hour|Day|Month|Year} FROM SYSDATE) FROM DUAL;

CAST(value as datatype) If value is a string it must match the default text representation of the datatype, so for example

CAST (’27-Mar-2007’ AS DATE) may work where
CAST(’27-03-2007’ AS DATE

In the following example note how the case format applied to the format part of the TO_CHAR function is used to format the results ‘TUESDAY’ and ‘March’, this could of course have a crucial effect if the value is used in a filter.
Thanks to Oracle’s built in LAST_DAY function, the formula to find the last day of the month, 3 months hence, is simple.



As an alternative method you could of course W_DAY_D as the source for the majority of your dates, pre-calculated columns such as cal_month, cal_week and week_ago_dt will make function statements shorter and easier to read. The SQL below extracts much the same as the previous one with addition of two Julian dates at the end, note also that you can use comments in these statements, always a good idea.

SELECT

CURRENT_DATE,
TO_CHAR(CALENDAR_DATE, 'DD/MM/YYYY'),
TO_NUMBER(DAY_OF_MONTH,'99'),
DAY_NAME,
TO_CHAR(WEEK_AGO_DT, 'DD/MM/YYYY'),
CAL_MONTH,
CAL_WEEK,
MONTH_NAME,
TO_CHAR(ADD_MONTHS(SYSDATE,-1),'MONTH'),
CAL_YEAR,
EXTRACT (YEAR FROM (ADD_MONTHS(CURRENT_DATE, -12))),
EXTRACT (YEAR FROM (ADD_MONTHS(CURRENT_DATE, -24))),
EXTRACT (YEAR FROM (ADD_MONTHS(CURRENT_DATE, -36))),
LAST_DAY(DAY_DT),
'01'||SUBSTR(TO_CHAR(DAY_DT,'DD/MM/YYYY'),3,8),
TO_CHAR(ADD_MONTHS(LAST_DAY(DAY_DT),2),'DD/MM/YYYY'),
ADD_MONTHS((CAST(DAY_DT AS DATE) - EXTRACT(DAY FROM CAST(DAY_DT AS DATE))+1),1)-1, /* Last day of previous month */
JULIAN_DAY_NUM,
JULIAN_MONTH_NUM

FROM
W_DAY_D
WHERE
CAST(SUBSTR(SYSDATE,1,10) AS DATE)=DAY_DT

The Cowes

The Cowes
Cowes Racing

Sudoku