Incorrect Result When Empty String In IIF Condition

(Doc ID 2350023.1)

Last updated on JANUARY 17, 2018

Applies to:

Siebel CRM - Version 16.3 [IP2016] and later
Information in this document applies to any platform.

Symptoms

On : 16.3 [IP2016] version, Siebel Workflow

ACTUAL BEHAVIOR

Incorrect result when empty string in IIF condition

Customer executes workflow processes within a custom Application Object Manager in DEU language, and gets some incorrect result when empty string is used in IIF condition.

There is the workflow step "Check Actual DOI Status":

=====
Step
Name: Check Actual DOI Status
Type: Business Service
Business Service Name: Workflow Utilities
Business Service Method: Echo

Input Arguments

(blank)

Output Arguments

Property Name: Method
Sequence: 1
Type: Literal
Value: Check Actual DOI Status

Property Name: Process Confimation Flag
Sequence: 2
Type: Expression
Value: IIF([&Actual DOI Status] = LookupValue("DB_DOI_STATUS","Subscribed"), 1, IIF(IfNull([&Actual Email Address],'') <> [&WS Email], 2, 0))
=====

In the above, the expression as an output argument:

"Process Confirmation Flag" = IIF([&Actual DOI Status] = LookupValue("DB_DOI_STATUS","Subscribed"), 1, IIF([&Actual Email Address] <> [&WS Email], 2, 0))

As you can see from the attached log, parameters have the following values:

[&Actual DOI Status] = Abgemeldet
[&Actual Email Address] = '' (this means NULL/blank)
[&WS Email] = qqq

Expected result for "Process Confirmation Flag" is 2, but the actual result is 0 which is incorrect. Here is extracted from log:


PrcExec PropSet 4 000000c85a1e4458:0 2017-11-29 14:11:56 Laufzeitwert von Eigenschaft 'Namespace: 'USER' Name: 'Process Confirmation Flag' Datatype: 'Number'' wird abgerufen:

PrcExec PropSet 4 000000c85a1e4458:0 2017-11-29 14:11:56 0

PrcExec PropSet 4 000000c85a1e4458:0 2017-11-29 14:11:56 Laufzeitwert von Eigenschaft 'Namespace: 'USER' Name: 'Method' Datatype: 'String'' wird abgerufen:

PrcExec PropSet 4 000000c85a1e4458:0 2017-11-29 14:11:56 Check Actual DOI Status


Also after modifying expression to IIF([&Actual DOI Status] = LookupValue("DB_DOI_STATUS","Subscribed"), 1, IIF(IfNull([&Actual Email Address], '') <> [&WS Email], 2, 0))
still the result is 0.

Could you please double check this.

EXPECTED BEHAVIOR

The expression has the result: 2

STEPS

The issue can be reproduced at will with the following steps in application using vanilla fields and Calculated field in SCCObjMgr_enu independent from Workflow Utilities step:

1. Configure the 'Calculated Value¿ for field 'Location Exp' on Account business component:


IIF([Name] = LookupValue("ACCOUNT_STATUS","Active"), 1, IIF([Main Phone Number] <> [Home Page], 2, 0))

Name, Main Phone Number, and Home Page are vanilla fields you can see in vanilla application in Accounts > My Accounts.

2. Create a new account record with the values:

[Name] = Test Account 1
[Main Phone Number] = '' (it is blank)
[Home Page] = website

Having this, the expression becomes IIF(FALSE, 1, IIF(TRUE, 2, 0)), which means result is 2
But result is 0 as shown in the field 'Location Exp' for the new account record,



Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms