ORDS 101

ORDS (Oracle REST Data Services) is a cool feature to extend your Oracle database for integration via HTTPS. It will change and digital transform the way you interact and integrate to applications. This is why you need to enable ORDS for your database for future API.

Why Change to REST?

REST is changing the way applications can quickly communicate with each other. It is much simpler to setup than SOAP/XML. In a way, it can replace many of legacy integration with XML and flat file. ORDS helps to enable access via RESTful web services to data and stored procedures in your Oracle database.

Time to ORDS

Another key advantages of ORDS is security and real time performance with your Oracle database. The REST API endpoints are quick and simple to setup. The quick deployment reduces traditional integration method by eliminating the need of complex middleware setup. JSON format and paged results helps to support the ease of data responses.

If you are using Oracle database, it is time to ORDS and enable your REST capabilities. This will digital transform your integration method for other applications and agile your development.

ODA: Upload to Embedded Component Service Results in Failed to fetch custom component metadata, error response: 504

Today, I hit a really $&#% issue regarding Oracle Digital Assistant (ODA) Chatbot. This has to do with custom component feature. I find this error message misleading and leads to hours of troubleshooting efforts. So, it is better to share here for our further reference.

Oracle Solution

The typical cause for this error is that your component folders contain non-component files. The directories that you name in the components array in the main JavaScript file should point to directories that contain only component files. This includes files in any subdirectories.

Say, for example, that the main JavaScript file sets the components array like the following code example. This statement tells the component service upload process to look in the components directory structure for the custom component definitions. The server will look at every file in the directory structure and try to process each one as a custom component. If there are files in that directory structure that aren’t custom components, the upload process fails because it can’t parse the file as a custom component.

If you get this error, create a separate folder, such as helpers, in the same folder that main.js is in. Then move the non-component files into it, and modify your code accordingly.

Source from Oracle
The Actual Error

The root cause I got from this error is JavaScript syntax error. While loading the custom component, the JavaScript with error is not identified as a component file. As such, it throws this error message in ODA.

Common Syntax Error

Reference to other JavaScript module must be within invoke function.

invoke: (context, done) => {

const fetch=require("node-fetch")
}

Be careful of syntax like semicolon after keepTurn. This will cause the same error message while loading of custom component.

context.transition('success')
context.keepTurn(true);

Hope these ODA tips helps and ease hours of frustration. Great thanks to Oracle Kevin for these!

A Useful Cloud Template

If you are dabbling in cloud, you will find that there are a few key cloud design model. I find that these standard design cloud architecture are useful templates. These templates can help developers to set up this quickly without the help of infrastructure or security experts. One key cloud template is a pair of public and private subnet in a virtual network with a gateway.

Security Model

Developers want to deploy the infrastructure quickly without worry of security. The design model of private and public subnet protects the access of sensitive data and components. This model is now easily template like AWS Cloudformation. If you are reviewing cloud template, do look out template like this to address security requirements.

Standard is Good Maintenance

Standard design model makes good maintenance for all support. Thus, the template makes developers to conform design pattern. This makes it suited for support like DevOps or Agile approach. Therefore, creation of common template leads to a standardisation of application infrastructure.

One of the most useful cloud templates is the deployment of private and public subnet with a gateway. This simple model can cater to many applications and and conform to security concerns. It also helps in the standardisation of your application architecture and enable your DevOps capabilities.

Digital Transformation Role

Digital transformation role are seen sprouting all over organisations as we are pushing digitalisation amid the pandemic. There is an increased creation of such roles for many organisations. How effective is this role? Who should be best fit for this role?

Characteristics of Digital Transformation

Digital transformation role involves a complex mindset change. This role is closely tied to the track record of the person who champion behavioural change across organisations. You should find a technology savvy person who will envision how technology must improve the business processes. You will realise that implementation hands are crucial for this role as you can create and showcase POC (Proof of Concept) with no reference model.

Setting Expectations

Digital transformation is another trend in the IT history. ERP (Enterprise Resource Planning), BPR (Business Process Reengineering) or BPO (Business Process Outsourcing) are some past trends that we can learn. It is important to set clear expectations of this role and what should be done to follow through its vision. Many of this disruptive change failed from the lack of buy in and follow through with users.

Digital Transformation role is a new role that many organisations have high expectations. However, there are some unique characteristics required for this role. You should also set realistic expectations and have a best fit person for the role. Thus, it is advisable to get one who are used to changes and innovation solution implementation for this role.

Freemarker Array in ODA

Freemarker array can be confusing to use in ODA (Oracle Digital Assistant). It is hard to find documentation on how to index the content for JSON array. These are the Freemarker syntax I had found to index array for ODA. Hope this helps!

Access First Level

First level JSON array are as follow:

{"results": 
[
{
"index": 0,
"field": "Number",
"value": 1
},
{
"index": 1,
"field": "Name",
"value": “Peter”
}
]
}

The syntax to access the first level array is:

${results.value[selValue.value?number].index}

Access 2nd Level

The JSON format are:

{"results": 
“count”: 2,
“items”:
[
{
"index": 0,
"field": "Number",
"value": 1
},
{
"index": 1,
"field": "Name",
"value": “Peter”
}
]
}

The syntax to access the 2nd level array is:

${results.value.items[selValue.value?number].index}

This will help you access a specific content by index in the array with Freemarker expressions in ODA.

COVID! Please Stay Indoors

In Singapore, Covid cases continues to rise as we are advised to stay indoors or avoid crowded places as part of COVID-19 measures. Work from Home is also a default to stem the increase. Elderly are advised to stay indoors as they are high risk group in contracting COVID-19. This comes not as a surprise as fatalities remain high for elderly!

Self Service ART

Taking national exam requires self service ART (Antigen Rapid Test) test. Even going back office will need ART test as well. This totally does not sounds like what we do for flu. The test adds to fuel as we divided and segregated vaccinated or ART tested people in daily lives. The new norm we crave is now littered with tests and Covid vaccination proof. Now, it seems we will be moving in ambiguity amid the various proof to be provided.

Advisory is Ineffective for Elderly

In ambiguous world, giving an advisory is not effective for the elderly. You cannot expect elderly to stay indoors or conduct daily ART. Staying indoors will be bored for them as they need social interactions. Taking ART is unrealistic unless this test is free or simplified. Thus, It is always recommended to take a firm message instead of issuing advisory.

The current measures have a similar effect with lockdown as we stay indoors and avoid risk. However, a constant stream of population will continue outdoors because this is not a lockdown to them. The confused measures will continue to contribute to increase cases as we balance acceptance of COVID-19. At this rate, it is unlikely we can move towards a maskless and testless endemic for the next few months.

Serverless 101

Serverless is a great concept for Cloud. It really abstracted the infrastructure and let the developers focus on application. It is also build on the model of on-demand or “pay as you use”. This really change the development approach to a focus on coding and simplify the deployment of backend services. Conceptually, the idea is great. However, organisations are not quick to embrace and digital transform to serverless. A key reason is understanding of serverless and how to make the switch.

What is Serverless?

Serverless literally means “no server”. Developers build applications on abstraction layers like containers or dockers. The focus is shifted to coding and cloud providers will handle the servers like maintenance, capacity, high availability or fault tolerance. Effectively, your codes only consumes resources when in usage. Some called this FaaS (Function as a Service).

Barriers to Serverless

Serverless concept is a major part of digital transformation. This is because it disrupted your legacy infrastructure and application development model. Most organisations do not have switch because of change required to transform existing legacy coding for serverless. In addition, there is a lack of understanding on how serverless can bring benefits. Of course, you will also need to understand which applications are suited to serverless approach.

Serverless is a part of digital transformation and it is not possible to avoid this step. You will need to understand and determine the advantages of serverless and what it could bring to your development team. A way you can do so is to start small and pilot simple functions on serverless.

Project Satisfaction

Projects always have an outcome. We must learn to set a realistic expectations for a positive outcome. Positive outcome is correlated to project satisfaction and happiness. Project satisfaction creates many positive effects that will increase revenues and enhance team capabilities. What is project satisfaction and how should you achieve it?

Setting Expectations

Many satisfaction studies often refer to expectation theory as a main point for positive outcome. Likewise, the project expectations must be set right from the start. Project success is not equate to project satisfaction. This is because stakeholders are unhappy when their expectations are not met.

Project framework usually state expectations loosely as scope. However, scope does not include the attachment to legacy, behavioral changes or resistance. Thus, expectations are much more than scope because it includes the one’s efforts and perceptions to achieve the project positive outcome.

Expectations Management

Desire or ignorance are part of human behaviors that arises in many projects. High expectations are set when desire grows too strong for comfort. Vice versa, ignorance lower expectations and users become disillusioned with the project. Expectations management will be new form of engagement that combine change management, digital transformation or even user adaption process. This allows a formalise method to under what goes beyond the stated scope for project satisfaction.

Project satisfaction will be a critical indicator to measure project implementation. Positive project satisfaction comes from structured expectation management of stakeholders to achieve a high positive outcome.

ODA Custom Component

Oracle Digital Assistant (ODA) custom component is a nice addition to extend the functionality of Chatbot. With custom component, you can utilise the functionality of NodeJs and integrate to backend services. However, it is not straightforward to be used for the typical users. You will need an intermediate level of development to understand and set it up. Of course, it is great if you have someone to guide you the overwhelming process. Here are some tips to get you started on custom components.

Getting Started

The best way to get started on custom components is to go through below steps.

  1. Read and understand the purpose of custom components.
  2. Do the tutorials for custom components.
  3. Modify the sample template for simple use case.
  4. Test your custom components and enable logs.
  5. As you build more custom components, you will gain confidence for complex use cases.
Moving Forward

Custom components is a good addition. However, you will need to be familiar with JavaScript and Integration of Cloud services. It will take a while before cloud providers can come up with wizard, template or even SaaS. Meanwhile, you may need a lot of patience to setup the base library of custom components for your business needs.

One method for integration to backend services is done via custom components. It take courage to take the first step to do the tutorials. Once you setup your environment for custom components, you can create simple custom components for your use case. This will build your confidence to develop more complex scenarios.

Oops! Wrong Buy In of Users

Over the years, I have worked in many project implementation. One of the funniest moment that I can look back and laugh is the wrong buy in of key users. It is not surprising that users are inserted in projects for their titles. Being new to these type of projects, you cannot chase them out until it is too late.

Watch the Signs

The first signs of such users are roles and accountability they played in projects. It is common to find no action items tagged to these users. They usually contribute with opinions like “influencer”. Usually, these users are vocal participants and unlikely to “chair” any meetings. They relish on conflicts and enjoy asking status of anything they can think of. If you encounter these signs in your users, do not invest efforts to buy in their “flavors”.

Be Focused

If your projects have such users, it is wise to avoid confrontations with them. This is because these users thrive with such situations. Lots of noise and unnecessary requests will increase once these users gain a foothold in your projects. Therefore, you must stay true and be focused for your project. A project timeline required focus fo reach its objective.

If you have buy in the wrong users, do not be discouraged. This is because we need go gain experiences to handle such cases. There are user signs you can look for and this will help you stay focus complete for project.