Consultium's Blog

All things technical for Oracle Applications

“Three” mobile phone contract in the UK – BEWARE!

leave a comment »

My daughter had a mobile phone contract with the THREE company (http://www.three.co.uk). She contacted them at the end of January when she wanted to cancel her contract; it was in my name and I spoke to the customer services about cancelling it.

This morning I noticed a charge on my bank statement that looked like THREE were still taking money from my account, so I rang them up to see why.

They basically explained that they sent my daughter a PAC code (so that she could transfer her number to a new provider), but she had decided to just take the new number without bothering to transfer it.

They said that the PAC code expired in 30 days. This is no problem, I knew and understood this. What I didn’t expect was that after 30 days they would reinstate the contract and start taking money off me again. That was January and now it’s August – so giving them a month for the cancellation period thats
7 months x £15.32 per month = £107.24 for nothing.

So I asked for the money back as the phone had not been used and they refused on the basis that they had sent text messages to the phone explaining that the contract would continue if the PAC code was not used. Whilst this may seem fair enough, we never read the text messages as we had a new phone contract with a different provider and not used the phone since January. I expected them to see this was reasonable, but unfortunately all I got was the robotic-like answer that it was in the contract (which I believed I’d cancelled).

So I asked to speak with the Manager, Rushmi Jajiv, to see if I could get any further. The response was the same.So I got no refund. According to Rushmi, this is industry “standard”. If it is, then BEWARE because THREE may steal money from you too.

So, CANCEL the direct debit when you cancel the phone – if they want the additional month while the contract finishes the final 30 days, let them write to you and ask for it, then send a cheque.

This was an opportunity (like most customer complaints) to secure a loyal fan; some one to tell a story of how reasonable they were, how they seem like a good company who treat you fairly. It would have been a positive story about THREE to be spreading. It’s a shame for THREE and a shame that people who work for THREE are employed to deceive people especially when they could do with the business.

Of course, this practice is criminal really, and THREE have lost any chance that I, my wife and my two children will ever use them again. They may have also lost the custom of any people I tell about this story to, either friends and family, or who ever sees this blog. It’s not the amount of money, it’s the principle of not taking money in an underhand way.

THREE should be ashamed of themselves.

Written by Andy Noble

August 4, 2011 at 2:09 pm

Posted in Uncategorized

Don’t leave performance tuning just to DBAs

leave a comment »

I was asked to look at a slow performing form recently by a client, and so I first tried to replicate the performance problem they were experiencing. This was quite straight forward on their test system; simply open the form, go to the Customer Number field, enter the value 3801016 and press tab.

I did this and it sat happily waiting for 2 minutes 48 seconds when it finally went to the next field in the form. I closed the form, opened it and tried again with the same values and it went to the next field almost instantly. So that told me that it was likely to be a query, and the database had returned the value so quickly this second time because the data was sat in memory and the database didn’t need to go and get the data from the disks which is a slower than accessing memory.

So I traced the form action and tkprof’d it to see what was happening. The slow running query which took the majority of the time in the trace file looked like this:

SELECT
 party.party_name
,acct.cust_account_id cust_account_id
,acct.account_number account_number
,party.email_address email_address
,nvl(party.gsa_indicator_flag, 'N') gsa_indicator
FROM
 hz_parties party
,hz_cust_accounts acct
WHERE 1=1
AND acct.party_id = party.party_id
AND acct.status = 'A'
AND party.party_id = nvl(:blk_search.party_id, party.party_id)
AND EXISTS (
  SELECT
  NULL
  FROM
   oe_order_headers h
  ,oe_transaction_types_all t
  ,oe_transaction_types_all_dfv tdfv
  ,fnd_lookup_values_vl lv
  ,fnd_lookup_values_dfv lvdfv
  WHERE 1=1
  AND h.sold_to_org_id = acct.cust_account_id
  AND h.open_flag = 'Y'
  AND h.order_type_id = t.transaction_type_id
  AND t.rowid = tdfv.row_id
  AND tdfv.order_type = lv.lookup_code
  AND lv.lookup_type = 'XXSYK_KC_ORDER_TYPES'
  AND lv.rowid = lvdfv.row_id
  AND lvdfv.locator_prefix = 'Y'
)
ORDER BY
3 

What I noticed about this query was there was no bind variable to represent what the user had entered (customer number 3801016) first before validation. So it appeared to me that the LOV was doing a blind query and returning all the data and only then looking for the value 3801016. So I added a line to the LOV query in the form itself:

  AND acct_account_number like :blk_search.customer_number||’%’

When testing this now was much faster (less than a couple of seconds) as long as there was some data in this field; if left blank it would perform as poorly as before which isn’t surprising as there was no limiting criteria to use an index with.

Written by Andy Noble

April 14, 2011 at 4:32 pm

What’s the point of the Ipad?

with 3 comments

I bought my Ipad last Sunday (6th June 2010) and straight away saw that it was much larger than my Iphone, which is pretty big for a mobile phone. Then I realized that that was it – so it was bigger not much else. Hmmm. Wasted my money?

For the first few days I was beginning to think so. Then this morning I was just leaving my house when I thought I should check to see if I’ve been paid by my client – if not then I could chase up on the payment today. So I went in to my home office and switched my computer on; forget that, it’ll take 3 minutes to boot and load windows, then another couple of minutes to get to the web site and log on to the internet bank. So I went upstairs to use my wife’s computer; but she also had it switched off. Then I remembered the Ipad. So I switched on. Instantly. Then I navigated to the website. Again quick wifi connection got me there quickly. I logged on, found out I had been paid and disconnected, all quicker than my PC could have booted up.

So I don’t need that every day, but to instantly connect to the web now from the comfort of my living room will change my behaviour. The whole web page was readable without messing around scrolling a window to view it on my phone – actually, that’s a surprisingly major advantage which until you’re using it and doing it is hard to sell; it’s got to be experienced to appreciate it.

Earlier in the week, I found all my family using it at various times. I’m the computer nerd and my wife and 2 teenage kids are computer savvy but it’s so easy to use that we all were very competent users and no ones opened a manual or asked for help… hmm ok, another advantage – it’s very easy to use. I can even see my Mum (who is the original fundamentalist luddite) using this – note to self, I need to take it down to her and see if I’m right.

Then it occurred to me that i only have been getting the opinions of computer nerds, er I mean professional collegues. They all talk about a laptop’s cheaper, can do more, it doesn’t do ‘flash’ etc. Most people don’t need the ‘more’ they talk about; they need it to do exactly what the Ipad does – play music, show photos, access internet, keep diary, read magazines…. we’ve been led to believe that everyone needs Windows; they do not and Apple are going to make a fortune as they’ve realized and made what most people want. As for ‘flash’, this may spell the end of it. If the Ipad doesn’t support it then it doesn’t exist to Ipad users and you find the content somewhere else.

It’s all about the experience of using a window on the web, not using a computer. The web is our collective computer which we all use; we don’t need our own local hard disks anymore, we can access and save our information from anywhere in the world.

This is the new dawn for the way the world works.

Written by Andy Noble

June 11, 2010 at 10:29 am

Posted in Ipad

Firefox, SQL Developer and others crashing

leave a comment »

I found that Firefox and SQL Developer kept crashing, which in the middle of a project was a new phenomenon – my first reaction was to look what I had done recently which was related to wireless networking on my laptop.

Checking for viruses, changing back parameters on my wireless network and other changes made me think I had totally lost it but then I saw a light! I had earlier added a new entry in the hosts file as instructed by my employer and thought I should include this in my investigation and found multiple entries of the same IP Address… I decided to remove the multiples and it appears that this has fixed the problem!

Written by Andy Noble

February 26, 2010 at 10:36 am

Posted in Oracle Development

Tagged with

Wiki moved

leave a comment »

I’ve just finished migrating my Wiki to the central Oracle Wiki at http://wiki.oracle.com and it’s taken me 3 days of solid migrating.

Out of the 10730 users on the wiki, I am now the 5th top user given that I’ve done 532 page edits during the migration. There’s a screen shot of this below; this is the power law graph and the long tail in action, with the top contributor making 1510 page edits.

The long tail of contributors; I'm now 5th out of over 10,000

Written by Andy Noble

October 9, 2009 at 4:35 pm

Posted in 1

Could you be the project idiot?

with one comment

Who would have thought in Roman times that skinny nerds would one day rule the world? Those with big brains, high IQs and soft hands rose to the top of the food chain.

But in this world where brains count for much, I think there has been a new opportuniy for the much maligned village idiot, or rather, the new role of project idiot. This is a new breed of idiot though and it is more of a purposeful strategy than an uncontrollble characteristic and like many strategies that work, this one also can by flipping many expectations on their head.

Any one can be one and it usually involves having the confidence and self belief to be laughed at, look stupid and appear weak; this cannot be acheived in your own area of expertise of course as you need to be respected in that area to even get on the project in the first place. No, this role is for someone to intervene in an area that is not their area and is useful when there is a problem that no one appears to be able to solve and there are large egos in play, or maybe there are politics that are immobilizing the way forward.

The main purpose of the role of project idiot is to appear curious but a bit stupid and non-threatening. This can play well in a situation were there are a lot of “stupid” questions that need to be asked and answered to ensure everyone has the same view, as often people will nod and agree without any understanding because of their position and the fear of looking stupid. Often, experts can reveal the limitations of their expertise (and hence the limitations on which their judgement should be followed unchallenged) by the project idiot, as he can perserve in asking questions that take everyone step-by-step through complexity.

Has your project got a project idiot? If the project is in trouble, it may need one.

Written by Andy Noble

October 3, 2009 at 11:53 am

Moving Wiki

leave a comment »

I’ve decided that my own wiki is a bit selfish. Sure, it’s great for me that I can put little HOWTOs on it for future reference, but no one else uses it because no one else knows about it. So, I’m going to migrate my wiki articles to the Oracle Wiki which is known and can be used by many people, but for the sake of old times I’ve kept a screen shot of what my own wiki looked like:

Migrating to Oracle Wiki

Consultium Wiki Sep 09 - Migrating to Oracle Wiki

Written by Andy Noble

September 4, 2009 at 8:01 am

Posted in Oracle

Oracle Scene publication

leave a comment »

My blog on how to quickly identifying missing join conditions in June 2008 in my group blog for Global Oracle Contractors Network was published in the Summer 2009 issue 38 of Oracle Scene, the official magazine from the UK Oracle User Group.

Written by Andy Noble

August 14, 2009 at 11:15 am

Posted in Oracle

Maybe you’re a luddite!

leave a comment »

You’ve worked with computers all or most of your professional lives – am I right? You may even like the new toys and gadgets and be a bit of a techie nerd – fewer of you, but still a significant number. However, the biggest single social upheaval, game changing technology has not yet been understood by many; even many computing professionals even though most will not admit it.

You can’t have failed to notice the wave of “Web 2.0″ since around 2004 which was utilising the web as a social mechanism and the resulting confusion with Facebook applications etc; I still hear plenty of coffee room conversations about what a waste of time it is and how people “don’t get it”. Well, the other thing that people don’t “get” yet are professional social sites like linkedin.com – many people have signed up for it, and the early adopters thought it was all about getting the highest number of connections, many had very limited details of who they were and little else but I think that the main point of these sites is to build a rich on-line presence that cannot be easily created overnight but instead evolves over months and years.

The methods of cultivating an on-line presence are varied; I’ve already mentioned linkedin.com for the maintaining an on-line equivalent to a CV, now enriched with genuine client references and recommendations and supplemented with a photograph and links to blogs. All your business connections are kept in one place, groups and communities can be joined and many agents are turning to this and other sites as a rich source of resources.

Some websites don’t seem to get it either; if only prometric.com would allow me to make public my genuine Oracle certifications for everyone to see… I don’t understand why they don’t, or at least why they don’t allow me to choose to make it public! The whole point of these certifications is that some level of understanding has been achieved and in turn gains credibility – I’d be happy for everyone to see mine.

There are many other opportunities for the go-getter; if you’re an expert in a topic (or want to be) contributing to the Oracle forums is a great way, potentially building to a recognised  “Oracle Ace”, being involved in the Oracle community for a particular subject area like development or in a module for Oracle Applications. The point is that credibility, history, longevity, connections, recommendations and the like can be built over years bit by bit, because the older the web gets the more and more it will become part of the fabric of everyday life, and once on the web its there forever and it’s very hard to fake it.

Written by Andy Noble

July 9, 2009 at 5:55 pm

A problem with context sensitive DFFs

leave a comment »

One of the problems with context sensitive descriptive flexfields (DFFs) is that according to the Oracle documentation, the field that is used for the context must be in the same block. I ran in to this problem when my client wanted to setup the Approved Supplier List (ASL) and they wanted to have different additional fields in the Supplier block for the COMMODITY type and the ITEM type, where the context sensive field is in the Items block:Approved Supplier List

There shouldn’t really be a problem with the context itself, as it is effectively a header field (ASL_ITEMS.<field>) which would be the same for all fields on the lines block (ASL_SUPPLIERS.<field>) allowing the context to be consistent and reliable.

So we need to be able to access the constant header value in the DFF setup to set the context. For this we will need to use a forms GLOBAL variable to hold the value; this is accessible from the DFF setup, and can be set via forms personalization.

First we need a forms personalization that will save the value to a global variable when the user enters the supplier block.

Forms personalization 1

This will trigger the saving of the context when the user enters the ASL_SUPPLIERS block

Forms Personalization - Action

This will save the value into the global variable GV_ITEM_COMMODITY, which is created at runtime.

Now we need to setup the DFF to use the newly created global variable GLOBAL.GV_ITEM_COMMODITY:

DFF Setup

Note that to make it work we need to Synchronize the context field with the reference field, also note that the reference field does NOT have the normal colon preceding the name.

Next Freeze the flexfield definition, and compile it.

Now to test the COMMODITY type:

Test of DFF for Commodity Type

And the Item Type:

Test for DFF for Item Type

Written by Andy Noble

June 1, 2009 at 4:37 pm

Follow

Get every new post delivered to your Inbox.