Uncategorized

Cross-Pod Report Links

Posted on Updated on

In one of the comments (on LinkedIn) for the previous post on Surfacing Reports to End-Users Sricharan Monigari asked:

Good idea.. But with every refresh we will have to redirect the hyperlinks to the right instance else they keep referring to the other instance from where it is being refreshed.. Do you have any solution for it?

Sricharan was cleverly thinking ahead to when the instance containing the dashboard of report links is refreshed over another pod. The report links would still point to the previous pod – which would be confusing at the very least.

Dashboard links to analytics are relative – by which I mean the link does not contain the server or domain info, just the path within the catalogue – and therefore need no changes after a pod refresh:

Dashboard links to BI Publisher reports are different. When you copy the link to the report to embed in the dashboard it is an absolute link, i.e. it includes the fully qualified domain name in addition to the report path. This is what Sricharan had thought about. Thankfully there’s a very easy solution.

The link to embed a BIP in a dashboard might look like this:

https//<server>.fa.em2.oraclecloud.com/xmlpserver/Custom/<folder>/<report>.xdo?<parameters>

To make the links portable across pod refreshes, simply replace the FQDN part of the URL and make it relative, as follows:

../../xmlpserver/Custom/<folder>/<report>.xdo?<parameters>

Then your dashboard will work both before and after refreshes.

Hiding Areas on Shared Sections

Posted on Updated on

It’s fairly trivial to hide fields/areas on pages by using Experience Design Studio or Page Composer to tweak the visible property. It’s a bit harder when the field/area that you wish to hide is on a shared component, however you only want to hide it on one of the pages it appears on.

In the Responsive ‘Personal Information’ tile we found that the Comments and Attachments section under ‘Add Disability’ was shared with ‘Resignation’.

We still wanted the fields to show on the resignation page, but not on the disability page. How do we achieve this?

Our first thought whenever there’s some conditional logic is to turn to Expression Language (EL). We needed a statement that we could put against the visible property of the fields along the lines of:

when page = Resignation, then visible = true
when page = Disability, then visible = false

So we just needed an EL statement that would allow us to check the page name. After consulting the documentation here we noticed the following:

Unfortunately we couldn’t get #{pageDocBean.title} to return the page title – or anything at all, in fact. Other EL expressions from the same page in the documentation worked (e.g. #{securityContext.userName}), but there were none that provided what we needed.

It looks like we’re not the only ones to hit this issue, as there’s a post on Customer Connect about the same issue.

We gave up on this approach and reverted to using a personalisation to inject a small piece of CSS onto the page.

Within a sandbox and Page Composer we inserted an HTML markup area into just the disability page (where we wanted the fields hidden). We then used Chrome Dev tools to locate the ID of the fields that we wanted to hide, and constructed an HTML snippet thus:

<style>
<div selector goes here> {
    display: none;
}
</style>

It worked perfectly. Sometimes you have to fall back to basic tools and methods to achieve what you need.

Duck-Typing and a Homepage Warning for IE11

Posted on Updated on

During a testing phase on one of our current clients we encountered an issue where some HCM Cloud pages weren’t displaying correctly to users who used the Internet Explorer browser.

This presented us with a problem, as Microsoft no longer really support IE11 (recommending Edge instead) and some users weren’t even on the latest release, having versions as far back as IE6 – which has been outdated for at least 15 years. With it not being supported by MS it’s not fair to expect Oracle to fix the issue. We cannot force all users away from IE as although the company could mandate a more modern default browser via AD group policy we cannot control what users choose to have on their personal laptops.

So it was decided that we would still allow users with IE11 and prior versions to access HCM Cloud, but to place a warning on the homepage to inform them that they’d get a better experience on a more modern browser. We obviously don’t want to trouble users of other browsers with this message however.

Identifying Browsers / Duck-Typing?

A little research on identifying browsers via Javascript led me to understand that checking the browser’s user agent string is not reliable. The best-rated solution on Stack-Overflow uses a technique amusingly called duck-typing. This uses a duck test—“If it walks like a duck and it quacks like a duck, then it must be a duck”—to determine if an object can be used for a particular purpose. In this case, instead of querying the browser user agent (essentially expecting the browser to accurately describe itself), duck typing tests how the browser behaves. If it behaves in the way we know IE browsers behave, then it must be IE etc.

Here’s the Stack Overflow answer.

Displaying a warning for only Internet Explorer users

Now we can identify IE users, we need to display a message to them.

First I decided where the warning would look best, deciding on just below the welcome greeting. I copied the name of this div for later use.

Within a Sandbox I used Page Composer to edit the springboard. I added an HTML Markup object and named it ‘IE11 Warning’.

Within the HTML Markup I added content that contained some javascript that appended to the greeting div with the warning only for users that we’d identified as IE11 via duck-typing.

The End Result:

It works a treat, displaying for IE users and not for anyone using other browsers.

IE11 warning

Oracle’s Q4 Results and a hidden gem

Posted on Updated on

Oracle posted some storming Q4 results last week, beating both Safra Catz’s own guidance and analyst expectations. Total Quarterly Revenues were $11.1 billion, up 1% in USD and up 4% in constant currency compared to Q4 last year.

Oracle CEO, Safra Catz said “Our high-margin Fusion and NetSuite cloud applications businesses are growing rapidly, while we downsize our low-margin legacy hardware business. The net result of this shift .. to cloud applications was a Q4 non-GAAP operating margin of 47%, the highest we’ve seen in five years.”

That all sounds very healthy.

Oracle CEO, Mark Hurd continued with “Our Fusion ERP and HCM cloud applications suite revenues grew 32% in FY19.”

Again, this sounds positive. Others, such as Diginomica, highlight the mentions of recent wins from competitors, including Diebold Nixdorf (from SAP), Helmerich & Payne (from Epicor), Tiffany and Experian (from SAP/Microsoft).

This is also a very good sign. This is where most of the reported coverage finished however. There was a hidden gem at the bottom of Oracle’s press release that I haven’t seen highlighted in many reports. Mark Hurd also said:

These strong results extend Oracle’s already commanding lead in worldwide Cloud ERP. Our cloud applications businesses are growing faster than our competitors. That said, let me call your attention to the following approved statement from industry analyst IDC:

Per IDC’s latest annual market share results, Oracle gained the most market share globally out of all Enterprise Applications SaaS vendors three years running—in CY16, CY17 and CY18.

Very interesting indeed …

Fusion and in-app Guides

Posted on Updated on

I’ve heard a couple of clients recently mentioning that they’d like to have some kind of in-app guide setup to walk their self-service users through common tasks in Fusion, so I thought I’d investigate.

There are quite a few companies that operate in the same area, here are the ones that I found with a short googling session:

Service Cost
Appcues Varies
Iridize Acquired by Oracle, now known as Oracle Guided Learning
MyGuide $1-3/user/month
Pendo Varies
Toonimo Request a Quote
Userlane Request a Quote
WalkMe Request a Quote
Whatfix Request a Quote
UserPilot $119/mth for <2.5k users, $239/mth for up to 10k users

There are also a couple of Open Source alternatives Joyride and Bootstrap Tour. Although they’re free to use, you’re going to need to code to get anything up and running so they’d be significantly higher maintenance.

Over the next few weeks I’ll investigate some of these options and post the results.

Mary Meeker’s Internet Trends 2018

Posted on

Mary Meeker has delivered her annual Internet Trends report and – as usual – there’s a lot to consider. Others have picked it over for general points of interest so I won’t repeat that, so instead I’ll focus on possible ramifications for Oracle’s Cloud Apps.

Mary Meeker

Mobile Users / Internet Users

There was no growth (in 2017, compared to 2016) on new mobile phone shipments. Have we reached smart-phone saturation point? Also of note is that it’s now a completely two-horse race with no alternative to Android (~85% market share) and iOS (~15%). Growth in internet users sits at about 7%, so this growth is on platforms other than mobile. Internet usage now sits at 3.6 billion people, ~50% of the World’s population.

Although there’s no increase in mobile phone sales, those that are using the internet on their smartphones are spending more time using them. Of the average 5.9 hours/day, the majority of this is on a mobile device (phones & tablets).

internet hours

The new HCM Cloud newsfeed UI – which is responsive on mobile devices – cannot come soon enough in this respect.

Chat use is Rocketing

The main chat platforms – Whatsapp, FB Messenger, WeChat, Instagram and Twitter – have risen sharply in the last few years.

chat usage.png

The leader – Whatsapp – is now at an incredible 1.5 billion monthly active users and is still climbing.

Any concerns that we may have about the adoption of Chatbots within Oracle Cloud should be lessened as customers will surely be comfortable using multiple chat interfaces by the time they are released.

Machine Learning

Google’s reported accuracy for its Machine Learning software has passed the 95% level that is used as the benchmark for human accuracy. The Amazon Echo install-base is now up to 1/4 of US households and there are now 30,000 “skills” in its repository of commands.

All this means that voice is increasingly important. I’ve heard of Oracle Voice – and seen a video of a salesperson adding an entry into Oracle Cloud in the back-seat of a taxi via voice – but haven’t heard of any other delivered offerings in this area. I’ve also seen the Steve Miranda demo during the Oracle Soar announcement (if you missed the demo, it’s 2 minutes and can be seen here).

Personalisation

Mary also spoke about personalisation of the user experience of a service by using data – both from the individual and collective data.

personalisation.png

She also mentioned a paradox related to this personalisation. Companies obviously need to store more information about each user in order to effectively personalise the service to the individual’s needs, however there is increasing caution about which companies hold personal data.

Clearly, the HCM Cloud parallel is the imminent newsfeed UI which adapts its content to the user and the intelligent defaulting of fields based on machine learning algorithms.

Regulation on Data

Unsurprisingly given the Cambridge Analytica / Facebook debacle Mary highlights rising concerns about what companies are doing with our data. Many countries have updated data privacy laws (including the EU’s GDPR). What is more of a shock is that the data privacy laws in the US haven’t changed since 1974.

regulation

Oracle’s investment over the last couple of years in building out its global data centre coverage will definitely help allay concerns where customers have requirements to deploy in countries where the regulations are more rigorous.

Security and Malware

It’s becoming increasingly obvious that relying on the same security that you did 2, 3 or 5 years ago is just inviting trouble. There is 12x the number of observed malware attacks than there was 2 years ago. Mary says “Adversaries are taking malware to unprecedented level of sophistication & impact … and for some the prize isn’t ransom, but obliteration of systems & data.” 

That Oracle have increased the focus on security precautions and detecting malware with their autonomous threat detection and machine learning algorithms is definitely a good thing here.

Bite-size Learning

Mary also trumpeted the massive growth in the use of video for consumption of educational content.

learning

This ties in very nicely with Oracle Learning Cloud, which enables the delivery of bite-sized videos, either stand-alone or as part of a series, to aide continuous learning within a company.

For those with time to kill, the full (294 slide) deck can be seen here:

 

R13 – Get Username Displayed Again

Posted on Updated on

One of the things that we lost when we moved from R12 to R13 is the username in the top right corner. For end-users in production it doesn’t really matter as they’ll only be logging in as themselves, however during the implementation in Test we frequently log-in as different personas so it’s useful to see who the user is for your current session.

username

The initials we have in R13 offer a clue, but in non-Production pods it’d be nice to be able to see the full username. Luckily, there’s a tiny tweak that you can make to allow this.

Part of the idea came from this ERP Web Tutor video that shared the idea of putting static text in the global region/header bar:

ERPWebTutor

We’re going to take it a step further though, by including dynamic content instead of static text. The steps are as follows:

  1. Create yourself a fresh Sandbox and activate it
  2. From the Settings and Actions menu, select Customize Global Page Template
  3. Click in the centre of the Global Region and add an HTML Markup component (it needs to be HTML, not plain text, so we can style it appropriately)
  4. Click Close to exit, then click Customize Pages
  5. Edit the HTML Markup and use the following in the Value field:
    <p style="font-size: 18px; -webkit-margin-before: 10px; -webkit-margin-after: 0px;">
      <span style="color: rgba(255, 255, 255, 0.5);">
        User:&nbsp;
      </span>
      #{webCenterProfile[securityContext.userName].displayName} 
      <span style="color: rgba(255, 255, 255, 0.5);">
        &nbsp;&nbsp;&nbsp;Pod:&nbsp;
      </span>
      TEST
    </p>
  6. Click Close and test your change.

It should look like this:

final version

Notes:

  1. If your global region has a pale background you’ll need to tweak the colours/transparency so the text appears clearly.
  2. You’ll notice from the above HTML snippet that the username is dynamic and the pod is hard-coded. I’ve not yet found a way of bringing the pod alias in dynamically.
  3. I had to tweak the position of the HTML Markup component once as it was pushing the icons to the right past the edge of the screen. If you’re having problems place it inside the dark blue box in this picture, not the light blue one.

positioning