HCL-TECH-SOFTWARE/domino-online-meeting-integration

[BUG] Meetings can not be created if there is Finnish regional formats in use in Windows 10

Closed this issue · 13 comments

HCL Product Version
Notes 12.0.1

Describe the bug
Meetings can not be created if there is Finnish regional formats in use in Windows 10.

Error Message
With Finnish regional format I always get an error message "The HTTP request failed."

To Reproduce

  1. Set OS regional setting to Finland (Finnish)
  2. Start Notes client and try to create a new online meeting with Teams or other online service. It will fail.
  3. Set OS regional setting to English (United States)
  4. Start Notes client and try to create a new online meeting with Teams or other online service. It will succeed.

Expected behavior
It should be work like it works with regional settings of English (United States)

Screenshots
image
image

Desktop (please complete the following information):
Windows 10, version 21H1 (OS Build 19043.1415)

Additional context
By debugging http requests didn't help at all. In both cases all logged lines are exactly the same:

Successful log / Regional format: English (United States):
[4310:0002-1BBC] LSXBE HTTP debug information type: HTTP Request header:
[4310:0002-1BBC] POST /v1.0/me/onlineMeetings HTTP/1.1
[4310:0002-1BBC] Host: graph.microsoft.com
[4310:0002-1BBC] User-Agent: libcurl-agent/1.0
[4310:0002-1BBC] Accept: /
[4310:0002-1BBC] Content-Type: application/json
[4310:0002-1BBC] Authorization: Bearer eyJ0eXAiOiJ5jZSIdfgdsfgds6ImN5aU8xY1FiNDdYT3U5Y0RPemZ2bmpqLXluNmdJV1ZTdlVHYjRFM2g4LVdfgEiLCJ
[4310:0002-1BBC] LSXBE HTTP debug information type: HTTP Request SSL data:
[4310:0002-1BBC]
[4310:0002-1BBC] LSXBE HTTP debug information type: HTTP Request data:
[4310:0002-1BBC] {"subject":"Meeting","startDateTime":"2021-12-29T12:00:00+02:00","endDateTime":"2021-12-29T12:30:00+02:00"}
[4310:0002-1BBC] LSXBE HTTP debug information type: Generic Information:
[4310:0002-1BBC] We are completely uploaded and fine
[4310:0002-1BBC] LSXBE HTTP debug information type: HTTP Response SSL data:
[4310:0002-1BBC]
[4310:0002-1BBC] LSXBE HTTP debug information type: Generic Information:
[4310:0002-1BBC] Mark bundle as not supporting multiuse
[4310:0002-1BBC] LSXBE HTTP debug information type: HTTP Response header:
[4310:0002-1BBC] HTTP/1.1 201 Created
[4310:0002-1BBC] LSXBE HTTP debug information type: HTTP Response header:
[4310:0002-1BBC] Date: Wed, 29 Dec 2021 06:20:34 GMT

Failed log / Regional format: Finnish (Finland):
[1CD0:0002-4160] LSXBE HTTP debug information type: HTTP Request header:
[1CD0:0002-4160] POST /v1.0/me/onlineMeetings HTTP/1.1
[1CD0:0002-4160] Host: graph.microsoft.com
[1CD0:0002-4160] User-Agent: libcurl-agent/1.0
[1CD0:0002-4160] Accept: /
[1CD0:0002-4160] Content-Type: application/json
[1CD0:0002-4160] Authorization: Bearer eyJ0eXAiOiJ5jZSIdfgdsfgds6ImN5aU8xY1FiNDdYT3U5Y0RPemZ2bmpqLXluNmdJV1ZTdlVHYjRFM2g4LVdfgEiLCJ
[1CD0:0002-4160] LSXBE HTTP debug information type: HTTP Request SSL data:
[1CD0:0002-4160]
[1CD0:0002-4160] LSXBE HTTP debug information type: HTTP Request data:
[1CD0:0002-4160] {"subject":"Meeting","startDateTime":"2021-12-29T13.00.00+02:00","endDateTime":"2021-12-29T13.30.00+02:00"}
[1CD0:0002-4160] LSXBE HTTP debug information type: Generic Information:
[1CD0:0002-4160] We are completely uploaded and fine
[1CD0:0002-4160] LSXBE HTTP debug information type: HTTP Response SSL data:
[1CD0:0002-4160] Ω
[1CD0:0002-4160] LSXBE HTTP debug information type: Generic Information:
[1CD0:0002-4160] Mark bundle as not supporting multiuse
[1CD0:0002-4160] LSXBE HTTP debug information type: HTTP Response header:
[1CD0:0002-4160] HTTP/1.1 400 Bad Request
[1CD0:0002-4160] LSXBE HTTP debug information type: HTTP Response header:
[1CD0:0002-4160] Date: Wed, 29 Dec 2021 06:22:50 GMT

Hello Jarkko.

I suspect this may be a problem with the NotesHTTPRequest object included in the international language version of Notes you have installed. As this has to do with the 12.0.1 code stream, I will ask Product Development to look into it.

Hope this helps!

Thanks Devin,

In addition to this I'm using standard Notes client in english. Only the OS regional settings are different.

-Jarkko

The problem is due to the bad time format used on startDateTime and endDateTime values. Teams (and others) expect time data to be colon delimited, not period delimited like we see in your logs.

The LotusScript that creates the value is:

		result = Format(dt.Lslocaltime, "yyyy-mm-dd") & "T" & Format(dt.LSlocaltime, "hh:nn:ss")

so I am surprised to see the wrong delimiters in the output. The format string is clearly colon delimited. I will take a closer look at this to see what is causing the issue.

Yep, you are right @INeedCaffeine. The issue is the bad time format.

I just don't understand why this format function refuses to use : as a separator when using the finnish language defaults. Not sure how this could be nicely fixed but I found a workaround by replacing the code with:

result = Format(dt.Lslocaltime, "yyyy-mm-dd") & "T" & Replace(Format$(dt.LSlocaltime, "hh:nn:ss"),".", ":")

Now DOMI works also with finnish regional settings :)

Awesome workaround Jarkko!

Thanks for the confirmation and workaround. I created SPR BKANCATM9B for tracking purposes.

Hello,

have same issue on Latvian locale.
Unfortunately provided workaround is not working in our case.

Hello,

have same issue on Latvian locale. Unfortunately provided workaround is not working in our case.

Hi @AleksandrCyone

Did you change ALL the time format lines from JsonDateTime LS Library?

I recommend you to comment original lines like this:

localTime = dt.Localtime
If (localTime = dt.Dateonly) Then
'result = Format(dt.Lsgmttime, "yyyy-mm-dd")
result = Replace(Format$(dt.Lsgmttime, "hh:nn:ss"),".", ":")
Else
If (localTime = dt.Timeonly) Then
'result = Format(dt.Lsgmttime, "hh:nn:ss")
result = Replace(Format$(dt.Lsgmttime, "hh:nn:ss"),".", ":")
Else
'result = Format(dt.Lsgmttime, "yyyy-mm-dd") & "T" & Format(dt.Lsgmttime, "hh:nn:ss")
result = Format(dt.Lslocaltime, "yyyy-mm-dd") & "T" & Replace(Format$(dt.LSlocaltime, "hh:nn:ss"),".", ":")
End If
result = result & |Z|
End If

There are multiple places, which need to update. By changing them all the case has solved with Finnish formats at least.

-Jarkko

Hello @jarkkopie

I'm getting same error as you describe but in my case time format is not using period. It looks just like yours when you're using English format:
LSXBE HTTP debug information type: HTTP Request data:
{"title":"Test1","agenda":"No agenda available","start":"2022-02-16T10:45:00+0200","end":"2022-02-16T11:45:00+0200"}
LSXBE HTTP debug information type: HTTP Response SSL data:
´
LSXBE HTTP debug information type: Generic Information:
Mark bundle as not supporting multiuse
LSXBE HTTP debug information type: HTTP Response header:
HTTP/1.1 404 Not Found

So it looks like issues are different, because we have 404 in our case
Also, I'm getting this error:
{"message":"Session type not found by Session type ID","errors":[{"description":"Session type not found by Session type ID"}],"trackingId":"ROUTER_620CB7E4-891C-01BB-0114-0AFDE8311214"}

@AleksandrCyone : The time format in that request is fine. It does not look like the original issue that @jarkkopie reported.

Based on your agenda string it looks like you are running the original DOMI scripts. Can you test using a 12.0.1 Notes client & template and see the same problem?

Also, with which service or services are you seeing that problem?

Issue resolved in 12.0.1 template.

This issue is NOT resolved in 12.0.1 template. You have to make the same fix here.

Despite of format string use, the actual time separator from format function is the time separator specified for the given country in the operating system's international settings. At least in Finnish formats, time separator is dot which is not acceptable with Teams API. So you have to reformat time separators before sending HTTP request.

Just change a one line is needed in three functions of JsonDateTime LS library. Original lines are commented below.

function notesDateTimeToJson:
'result = result & getOffsetString(dt)
result = Replace(result, ".", ":") & getOffsetString(dt)

function notesDateTimeToJsonOffsetColon:
'result = result & getOffsetStringColon(dt)
result = Replace(result, ".", ":") & getOffsetStringColon(dt)

function notesDateTimeToJsonOffsetZulu:
'result = result & |Z|
result = Replace(result, ".", ":") & |Z|

Meetings can now be also created if there is Finnish regional formats in use in Windows. This might help with other non-english language settings as well.

fixed in 14.0 via SPR PDARCXBJUW: Unable to create DOMI online meeting for Finnish language
alternate fix is to escape colon character- Format(dt.LSlocaltime, "hh:nn:ss")