Hi,

The MidTier and ARUser.exe both translates all empty strings to NULL and also
strips LEADING and TRAILING spaces off strings.

Therefore I think it good practice to have all API-programs do the same.

        Best Regards - Misi, RRR AB, http://rrr.se

> Hi,
>
> Yes You are right. Record on 'Form1' is updated by API-program and probably
> this program set zero-length string instead of a NULL. My problem is that that
> I don't know what API-program update records on 'Form1', so I will need to
> find source. Now when I know that it was problem with empty string I can set
> appropriate Run If Qualification in FLTR, before that I thought that maybe
> some Remedy workflow push data to this form with a NULL value. But I went
> through all workflow and I did't find such
> workflow.
> I even created mimic workflow which pushed NULL value or empty string to
> 'Field1.1' but it caused that previous qualification [('Field1.1' !=
> 'DB.Field1.1') AND ('Field1.1' != $NULL$)] of FLTR works fine. I didn't
> realize that it could behave different in Remedy clients vs API-program - that
> empty string is treated differently.
>
> One more time thanks Misi for help!
> Have a nice day!
>
> Best regards,
> Piotr
>
> Dnia Poniedziałek, 19 Stycznia 2015 13:36 Misi Mladoniczky <m...@rrr.se>
> napisał(a)
>> Hi,
>>
>> If you create the record through the normal user interface such as
>> ARUser.exe
>> or Mid-Tier, or via a Push-Fields, there will normally not be any
>> zero-length
>> strings, only NULL.
>>
>> If you submit through an API-programs or some other means, it might be
>> possible to send a zero-length string instead of a NULL.
>>
>> How do you create the records?
>>
>> If this is your actual problem, you might want to create a preceding filter
>> that sets it to NULL if it is "". This way you will know if this is causing
>> your problem by looking at the log.
>>
>>         Best Regards - Misi, RRR AB, http://www.rrr.se (ARSList MVP 2011)
>>
>> Ask the Remedy Licensing Experts (Best R.O.I. Award at WWRUG10/11/12/13):
>> * RRR|License - Not enough Remedy licenses? Save money by optimizing.
>> * RRR|Log - Performance issues or elusive bugs? Analyze your Remedy logs.
>> Find these products, and many free tools and utilities, at http://rrr.se.
>>
>> > Hi Misi,
>> >
>> > thanks for answer. I've already done this as well - remove Run If
>> > Qualification and it doesn't help. I even export this FLTR to def file and
>> > look how it looks in def fiel, just in case if this could be problem with
>> Dev
>> > Studio.
>> >
>> > No, my fields don't have name like 1.1, but I've changed names for purpose
>> of
>> > this message. Although it is good to know about such situation which can
>> occur
>> > if we use field name with dots - I didn't know about such "future" ;) But
>> I
>> > think this will only happen when we use name only with numeric and dots
>> > without latters, as your given example '15.1.2'.
>> >
>> > Yesterday I tested one more option - empty value in 'Field1.1' instead of
>> NULL
>> > value. This also suggested me LJ LongWing on BMC Community. After change
>> > qualification from:
>> > ('Field1.1' != 'DB.Field1.1') AND ('Field1.1' != $NULL$)
>> > to:
>> > ('Field1.1' != 'DB.Field1.1') AND ('Field1.1' != $NULL$) AND ('Field1.1'
>> !=
>> > "")
>> >
>> > record are not created since yesterday. I will be watching this weird
>> > situation. If this suspicions will confirm then I will ask programmer to
>> > change API program which update value in 'Field1.1. It looks like this
>> program
>> > update this field even when nothing has changed.
>> >
>> > Best regards,
>> > Piotr
>> >
>> > Dnia Poniedziałek, 19 Stycznia 2015 11:04 Misi Mladoniczky <m...@rrr.se>
>> > napisał(a)
>> >> Hi,
>> >>
>> >> I don't know...
>> >>
>> >> I would try to remove the Run-If, Save the FLTR and then add the Run-If
>> >> manually using field IDs instead of field names.
>> >>
>> >> Do you really have the "1.1" etc in your field names? There are
>> situations
>> >> where specifying dots have a meaning to separate different fields, such
>> as
>> >> when referencing the different Status-History values. For example
>> '15.1.2'
>> >> would mean the 'Status-History.Assigned.Time'. The currency fields also
>> have
>> >> special meaning for dots.
>> >>
>> >> So if there is a bug in your version of DevStudio, using field ids might
>> fix
>> >> your problem: ('536870913' != 'DB.536870913' AND '536870913' = $NULL$)
>> >>
>> >> The text will change back to database names when you save, but the values
>> >> stored in the DB might be different. You can verify this by exporting a
>> >> FLTR-DEF-file before and after you do this.
>> >>
>> >>
>> >>         Best Regards - Misi, RRR AB, http://www.rrr.se (ARSList MVP 2011)
>> >>
>> >> Ask the Remedy Licensing Experts (Best R.O.I. Award at WWRUG10/11/12/13):
>> >> * RRR|License - Not enough Remedy licenses? Save money by optimizing.
>> >> * RRR|Log - Performance issues or elusive bugs? Analyze your Remedy logs.
>> >> Find these products, and many free tools and utilities, at http://rrr.se.
>> >>
>> >> > Hi Guys,
>> >> >
>> >> > I have two weird situations, maybe the reason is obvious but I'm focus
>> on
>> >> my
>> >> > code and don't catch this. So I hope you can help me or suggest what to
>> do
>> >> :)
>> >> >
>> >> > First I will describe my workflow and then I will describe my problem
>> with
>> >> it.
>> >> >
>> >> > There is a regular 'Form1' with character optiona 'Field1.1'.
>> >> > To this form is connected 'FLTR1' executed on Modify with
>> qualification:
>> >> > ('Field1.1' != 'DB.Field1.1') AND ('Field1.1' != $NULL$)
>> >> > 2 actions:
>> >> > - Set Field
>> >> >      From Name:'Form2'
>> >> >      Qualification:('Field2.1' = "Value") AND ('Status2' = "Active")
>> AND
>> >> > ('Field2.2' = $Field1.1$)
>> >> >           If No Request Match:Set Fields to $NULL$
>> >> >           If Multiple Request Match:Use First Matching Request
>> >> >      Mapping:  'tmpField1.2'=$Request ID2$
>> >> > - Call Guide 'Guide1' Table Loop:None
>> >> >
>> >> > Filter Guide "Guide1" has only one 'FLTR2' which is also related to
>> >> 'Form1'
>> >> > but without execution, with qualification:
>> >> > 'tmpField1.2' != $NULL$
>> >> > 1 action:
>> >> > - Set Field
>> >> >      Form Name:'Form2'
>> >> >      Qualification:'Request ID2' = $tmpField1.2$
>> >> >           If No Request Match:Set Fields to $NULL$
>> >> >           If Multiple Request Match:Use First Matching Request
>> >> >      Mapping:  'Field1.3'=$Field2.3$
>> >> > 1 else action:
>> >> > - Push Field
>> >> >      Form Name:'Form2'
>> >> >      Qualification:('Field2.1' = "Value") AND ('Status2' > "Active")
>> AND
>> >> > ('Field2.2' = $Field1.1$)
>> >> >           If No Request Match:Create a New Request
>> >> >           If Multiple Request Match:Take No Action
>> >> >      Mapping:  'Status2'="Pending"
>> >> >                     'Field2.1'="Value"
>> >> >                     'Field2.2'=$Field1.1$
>> >> >
>> >> > So when value in 'Field1.1' on 'Form1' has been changed, but is not
>> NULL
>> >> then
>> >> > workflow should check whether such value already exist on 'Form2' in
>> >> > 'Field2.2' and if yes then take value from 'Field2.3' from 'Form2' and
>> set
>> >> to
>> >> > 'Field1.3' on 'Form1'.
>> >> > If such value doesn't exist on 'Form2' then records should be created.
>> >> >
>> >> > It is typical situation - so it should work without any problem. But
>> it's
>> >> not,
>> >> > for some reason 'FLTR1' is fire even when 'Field1.1' is NULL and it
>> causes
>> >> > create on 'Form2' record with NULL value in 'Field2.2'.
>> >> > Update on 'Form1' is done by API. When I try simulate this situation by
>> >> > preparing test workflow which push data to 'Form1' to 'Field1.1' NULL
>> >> value it
>> >> > works fine - 'FLTR1' doesn't fire. When I push some value to 'Field1.1'
>> >> then
>> >> > workflow also work fine - check whether such value exist and if no
>> create
>> >> new
>> >> > record on 'Form2' but with value in 'Field2.2'. Also when I push
>> directly
>> >> to
>> >> > 'Form2' to 'Field2.2' with value NULL then my troubleshoot filter fire
>> and
>> >> > send to me notification about this.
>> >> > So it looks like problem exist only when it is done by API program.
>> >> >
>> >> > To troubleshoot this issue I've created filter on 'Form2' which should
>> >> execute
>> >> > on Submit, Modify when 'Field2.2'=$NULL$ and send to me notification
>> about
>> >> > such situation. It is strange because although records are created with
>> >> > 'Field2.2'=$NULL$ the FLTR doesn't pass the qualification (I see it in
>> the
>> >> > logs).
>> >> >
>> >> > This weird issue can be seen in gathered logs (FLTR, SQL and API):
>> >> > Server API log:
>> >> > /* Sat Jan 17 2015 16:10:00.0412 */+SE     ARSetEntry -- schema Form1
>> >> entryId
>> >> > 100000000000001 from Unidentified Client (protocol 14) at IP address
>> >> > 192.168.0.1
>> >> > /* Sat Jan 17 2015 16:10:02.7688 */-SE               OK
>> >> >
>> >> > Server FLTR log:
>> >> > /* Sat Jan 17 2015 16:10:02.6351 */     <Filter Level:0 Number Of
>> >> Filters:311>
>> >> > Checking "FLTR1" (500)
>> >> >     --> Passed -- perform actions
>> >> >          0: Set Fields
>> >> >                tmpField1.2 (536871628) =
>> >> >          1: Call Guide "Guide1"
>> >> > /* Sat Jan 17 2015 16:10:02.6367 */     <Filter Level:0 Number Of
>> >> Filters:312>
>> >> > Checking "FLTR2" (500)
>> >> >     --> Failed qualification -- perform else actions
>> >> >          0: Push Fields -> "Form2
>> >> >                <deferred to phase 2>
>> >> > /* Sat Jan 17 2015 16:10:02.6370 */     Call Guide "Guide1" (return)
>> >> > ...
>> >> > /* Sat Jan 17 2015 16:10:02.7076 */     End of filter processing (phase
>> 1)
>> >> --
>> >> > Operation - SET on Form1 - 100000000000001
>> >> > /* Sat Jan 17 2015 16:10:02.7077 */     Restart of filter processing
>> >> (phase 2)
>> >> > -- Operation - SET on Form1 - 100000000000001
>> >> > /* Sat Jan 17 2015 16:10:02.7079 */     <Filter Level:0 Number Of
>> >> Filters:391>
>> >> > Checking "FLTR2"
>> >> >          0: Push Fields -> "Form2"
>> >> >                <deferred from filter FLTR2>
>> >> >                Status2 (7) = 1
>> >> >                Field2.1 (8) = Value
>> >> >                Field2.2 (536871075) =
>> >> >
>> >> > Server SQL log:
>> >> > /* Sat Jan 17 2015 16:10:02.6354 */SELECT T1017.C1 FROM T1017 WHERE
>> >> ((T1017.C8
>> >> > = 'Value') AND (T1017.C7 = 0) AND (T1017.C536871075 = '')) ORDER BY 1
>> ASC
>> >> > /* Sat Jan 17 2015 16:10:02.6362 */OK
>> >> > /* Sat Jan 17 2015 16:10:02.6412 */SELECT C1 FROM T517 WHERE C1 =
>> >> > '100000000000001'
>> >> > /* Sat Jan 17 2015 16:10:02.6421 */OK
>> >> > /* Sat Jan 17 2015 16:10:02.7082 */SELECT T1017.C1 FROM T1017 WHERE
>> >> ((T1017.C8
>> >> > = 'Value') AND (T1017.C7 > 0) AND (T1017.C536871075 = '')) ORDER BY 1
>> ASC
>> >> > /* Sat Jan 17 2015 16:10:02.7094 */OK
>> >> > /* Sat Jan 17 2015 16:10:02.7103 */UPDATE arschema SET nextId = nextId
>> + 1
>> >> > WHERE schemaId = 1017
>> >> > /* Sat Jan 17 2015 16:10:02.7111 */OK
>> >> > /* Sat Jan 17 2015 16:10:02.7112 */SELECT nextId FROM arschema WHERE
>> >> schemaId
>> >> > = 1017
>> >> > /* Sat Jan 17 2015 16:10:02.7118 */OK
>> >> > /* Sat Jan 17 2015 16:10:02.7119 */INSERT INTO T1017
>> >> > (C2,C7,C8,C536871075,C3,C5,C6,C1) VALUES
>> >> > ('X',1,'Value','',1421511002,'X',1421511002,'200000000000002')
>> >> > /* Sat Jan 17 2015 16:10:02.7158 */OK
>> >> > /* Sat Jan 17 2015 16:10:02.7159 */INSERT INTO H1017
>> (entryId,T0,U0,T1,U1)
>> >> > VALUES ('200000000000002',1421511002,'X',1421511002,'X')
>> >> > /* Sat Jan 17 2015 16:10:02.7167 */OK
>> >> > /* Sat Jan 17 2015 16:10:02.7168 */COMMIT WORK
>> >> > /* Sat Jan 17 2015 16:10:02.7203 */UPDATE T517 SET
>> >> > C536871733='',C5='X',C6=1421511002 WHERE C1 = '100000000000001'
>> >> > /* Sat Jan 17 2015 16:10:02.7217 */OK
>> >> > /* Sat Jan 17 2015 16:10:02.7228 */COMMIT WORK
>> >> >
>> >> >
>> >> > Problem has been observed in the ARS 7.5.00.
>> >> >
>> >> > What do you think about this? What could be the reason?
>> >> >
>> >> > Cheers,
>> >> > Piotr
>> >> >
>> >> > _______________________________________________________________________________
>> >> > UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
>> >> > "Where the Answers Are, and have been for 20 years"
>> >> >
>> >>
>> >> _______________________________________________________________________________
>> >> UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
>> >> "Where the Answers Are, and have been for 20 years"
>> >
>> > _______________________________________________________________________________
>> > UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
>> > "Where the Answers Are, and have been for 20 years"
>> >
>>
>> _______________________________________________________________________________
>> UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
>> "Where the Answers Are, and have been for 20 years"
>
> _______________________________________________________________________________
> UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
> "Where the Answers Are, and have been for 20 years"
>

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
"Where the Answers Are, and have been for 20 years"

Reply via email to