Search This Blog

Sunday, October 18, 2020

HCL/IBM Notes does not work well with Segoe UI Emoji font family

 Hey


Let's go straight to the example.

I send email from my Exchange mailbox to my IBM Lotus Notes mailbox and that email contains smiling icon.

Email source (in Outlook) looked like that:

<html xmlns:v="urn:schemas-microsoft-com:vml" (cut some)>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<meta name=Generator content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
.....
@font-face
{font-family:"Segoe UI Emoji";
panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
.....
</style></head>
<body lang=EN-US link="#0563C1" vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal><span lang=NO-BOK>Bla bla bla </span><span lang=NO-BOK style='font-family:"Segoe UI Emoji",sans-serif'>&#128522;</span><span lang=NO-BOK><o:p></o:p></span></p></div></body></html>


Here it is what I got in Notes in READ mode (looked good)


However, as soon as I switched email to EDIT mode or clicked REPLY WITH HISTORY the icon disappeared and ? appeared instead.


I think Lotus Notes just does not how to deal with colorful "Segoe UI Emoji" font family but if you know how to fix that - please share. The main issue is that this is a common problem, I mean, if you try to create NotesMIMEEntity programmatically and put there HTML with &#128522; you will get the same result.

------------------------------------------------------------------------------------------
Updated later.

I tested this case more and found some new interesting details.

The email I used for demo above I received as an example from a colleague so when I described the case above I just played with already received email.

When I tried to create an email in Outlook myself and checked its source I didn't find there any HTML codes for the icons - instead I saw this - see below.


I sent the email above to my Notes mailbox.
It looked very good in READ mode and the icons were still usable in EDIT mode though they became black and white.

Read mode above


Edit mode above

So, obviously, the reason of the issue described on the very top is not related to Segoe UI Emoji font family. The reason is that Notes does not know how to render <span lang=NO-BOK style='font-family:"Segoe UI Emoji",sans-serif'>&#128522;</span> in Richtextitem in Edit mode. I do not know how that first email was created so that it contained HTML code &#128522; but it does not really matter.

Btw, the funny thing is that the same email in Gmail looks differently also :-)
Here it is the same email from outside - the last icon is black&white.


This is the same email from inside.






Monday, October 5, 2020

After migrating Domino9 to Domino11 an error "Error full text indexing document NT00000000 (rc=3859) Database is currently being indexed by another process" appeared in Domino console.

 Hi


Just to save someone's day: after migrating Domino9 to Domino11 some of our Xpages-based apps which ran NotesAgents started to print a new error message to console:


After migrating Domino9 to Domino11 an error "Error full text indexing document NT00000000 (rc=3859) Database is currently being indexed by another process" appeared in Domino console:



I fixed it by adding FT_SUPPRESS_AUTO_UPDATING=1 to server's notes.ini.

Took solution from here: http://blog.nashcom.de/nashcomblog.nsf/dx/notesdomino-10-ft-index-auto-update.htm?opendocument&comments

Thursday, September 24, 2020

Do you know how to fix the problem that Domino server is not able to decrypt fields in NotesDocument encrypted with its public key?

 Hello

I am expiriencing a problem that one of my Domino-servers can't read encrypted field(s) from SSO configuration documents. 

I did it tones of times in the past and I am sure I do everything correctly this time as well.

I've added notes.ini parameres to debug SSO and got this:

[59771:00002-4091922128] 24.09.2020 17:48:31,32 SSO API> Reading configuration LtpaToken [last read on ], view ($WebSSOConfigs) has changed [last updated on 23.09.2020 01:36:40].

[59771:00002-4091922128] 24.09.2020 17:48:31,32 SSO API> Looking for primary Name and Address Book.
[59771:00002-4091922128] 24.09.2020 17:48:31,32 SSO API> Found [1] Name and Address Book(s), opening first [names.nsf].
[59771:00002-4091922128] 24.09.2020 17:48:31,32 SSO API> Opened Directory [DHANDLE 0x000000D6], opening configuration view [($WebSSOConfigs)].
[59771:00002-4091922128] 24.09.2020 17:48:31,32 SSO API> Found view [NOTEID NT0000031E] for view [($WebSSOConfigs)], getting view collection.
[59771:00002-4091922128] 24.09.2020 17:48:31,32 SSO API> Opened view collection [DHANDLE 0x000000D1], searching for config [LtpaToken]
[59771:00002-4091922128] 24.09.2020 17:48:31,32 SSO API> Found note [NOTEID NT00006DB2] for config [LtpaToken], opening.
[59771:00002-4091922128] 24.09.2020 17:48:31,32 SSO API> Opened note [DHANDLE 0x00000019] for config [LtpaToken], decrypting.
[59771:00002-4091922128] 24.09.2020 17:48:31,32 SSO API> ERROR: when reading configuration [You cannot access portions of this document because it is encrypted and was not intended for you, or you do not have the decryption key.].

The funny thing is that Domino Domain contains two servers and another Domino-server does not have any issues - the same Web SSO configuration document works OK there.

I would like to ask you to share any ideas what is worth to check in addition to resolve the problem.
Please fines some details below.

The SSO document contains two server names + my name in "Public Encryption keys" field:

The document is ecnrypted


SSO config is also pretty standard (both servers do not use Internet Documents):
   


As I said - all works well on the second server but the first server can't read SSO keys.

I know how RSA encryption works (at least I think so) and I double checked that public key in server document was exactly the same as it was in its server.id. 


Can you please advice what else to check/try?






Thursday, July 2, 2020

Critical bug - manual changes on the form are discarded by action in embedded view

Hi

Not sure how I missed this bug for so many years of working with Notes but here it is what I discovered recently:

1) Imagine you have a form with a single field (dialog list) + embedded view.

2) Embedded view has a single action with following simple code


3) Then create a new document with this form, save the document, then change value of a field and click action in embedded view - your last change to the field is reverted to previous value somehow?!
See video:

I found two workarounds to avoid this issue:
1) Call NotesUIDocument.Save() before using doc.replaceItemValue in action of the embedded view


Sub Click(Source As Button)
Dim w As New notesuiworkspace
Dim uidoc As notesuidocument
Dim doc As notesdocument
Set uidoc = w.currentdocument
Set doc = uidoc.Document
Call uidoc.Save() '<----------
Call doc.ReplaceItemValue("aaa", "bbb")
End Sub

2) Call NotesUIDocument.refresh(false) before using doc.replaceItemValue in action of the embedded view

Sub Click(Source As Button)
Dim w As New notesuiworkspace
Dim uidoc As notesuidocument
Dim doc As notesdocument
Set uidoc = w.currentdocument
Set doc = uidoc.Document
Call uidoc.Refresh(false/true) '<----------
Call doc.ReplaceItemValue("aaa", "bbb")
End Sub

The first option can be unacceptable by application logic because users lose the ability to quit from a document without saving it.

The second option will not work if you use the property "Show single category" for embedded view - NotesUiDocument.refresh(false/true) will end with Notes crash.

This bug is reproducible for Notes 8.5x, 9x and 11x.

Thursday, October 24, 2019

Non-ASCII filenames and NotesMimeEntity/NotesMimeHeader

Hi

If you need to compose outgoing email with NotesMIMEEntity and NotesMIMEHeader and send attachment with it then you can do it by writing something like this:

Dim body As NotesMIMEEntity
Dim header As NotesMIMEHeader
Dim stream As NotesStream
....
//Here we define root entity for the tree
Set body = NotesDoc.CreateMIMEEntity("Body")
Set header = body.CreateHeader("MIME-Version") 
Call header.SetHeaderValAndParams(|1.0|)
Set header = body.CreateHeader("content-type") 
Call header.SetHeaderValAndParams(|multipart/mixed|)

//Then we can create any number of needed child entities with plain text, html, inline images and so on
Set child1 = body.CreateChildEntity()
Call child1.SetContentFromText (someStreamWithSomeContent, "text/plain;charset=utf-8", ENC_NONE) 
Set child2 = body.CreateChildEntity()
Call child2.SetContentFromText (someStreamWithSomeContent, "text/html;charset=utf-8", ENC_NONE) 
Set child3 = body.CreateChildEntity()
Call child3.SetContentFromText (someStreamWithSomeContent, "whatever;charset=utf-8", ENC_NONE) 
.....

//Finally we create an entity for file
Call stream.Truncate()
Call stream.Open(filepath, "binary") 

Set child = body.CreateChildEntity()
Set header = child.CreateHeader("Content-Disposition") 
Call header.SetHeaderValAndParams({attachment; filename="} & filename & {"})
Call child.SetContentFromBytes(stream, "application/octet-stream", ENC_IDENTITY_BINARY) 
child.EncodeContent ENC_BASE64 

Call stream.close()
.....

The block above works good for files containing only ASCII characters in name.
However if you try to send file with name like éééééédoc.docx - you would not receive original filename but this - see below

Content-Type: application/octet-stream
Content-Disposition: attachment;
filename=bbbdoc.docx
Content-Transfer-Encoding: base64

I have fixed this problem by changing line below:

Call header.SetHeaderValAndParams({attachment; filename="} & filename & {"})

To this:

Call header.SetHeaderValAndParams({attachment; filename*=utf-8''} & Join(Evaluate({@URLEncode("UTF-8";"} & filename & {")})))

Then you will get correct result:

Content-Type: application/octet-stream
Content-Disposition: attachment;
filename="éééééédoc.docx"
Content-Transfer-Encoding: base64

During testing I discovered that some of Mail-clients still displayed filename in a wrong way, f.x. filename could be correct in Notes-client but wrong in iNotes (Chrome).
I have fixed that last problem by replacing line

Call child.SetContentFromBytes(stream, "application/octet-stream", ENC_IDENTITY_BINARY) 

to

Call child.SetContentFromBytes stream, {application/octet-stream;name="=?utf-8?Q?} & Replace(Join(Evaluate({@URLEncode("UTF-8";"} & filename & {")})), "%", "=") & {?="}, ENC_IDENTITY_BINARY)

All credits to author of this post: https://blog.nodemailer.com/2017/01/27/the-mess-that-is-attachment-filenames/ from which I got the main idea.

Monday, September 10, 2018

(RESOLVED) Issues with Notes plugin after upgrading to 9.0.1FP10 - need some ideas from Notes/Java community where to dig up...

Hi

You've might already see this post: http://www-01.ibm.com/support/docview.wss?uid=swg22014562

Before choosing any direction for deep dive I would like to hear your opinion, may be this issue can be fixed with changes in Notes configuration or with some variable in plugin_customization.ini...

Here is the case.

There is a plugin (spell checker) working OK for ages for all versions of Notes prior FP10.

At first glance the problem happens because of lack of access rights - however I do not know now if this is because plugin was built for Eclipse 3x or because it is a bug or any other reason.

Let me show you some screenshots:

1) IBM Notes 9.0.1 FP9 - all works good.
The plugin can be successfully installed on IBM Notes 9.0.1 FP9 with or without administrator's access and it goes there:


The plugin-jars were copied to C:\Users\<username>\AppData\Local\IBM\Notes\Data\workspace\applications\eclipse\plugins\ and C:\Users\<username>\AppData\Local\IBM\Notes\Data\workspace\applications\eclipse\features\



2) IBM Notes 9.0.1 FP10 - there are issues.

2.1 Installation with administrator access rights - works OK but looks different

The plugin can  be successfully installed on IBM Notes 9.0.1 FP10 with administrator's access but it goes there:


The plugin-jars were copied to C:\Program Files (x86)\IBM\Notes\framework\shared\eclipse\plugins\ and C:\Program Files (x86)\IBM\Notes\framework\shared\eclipse\features\


2.2 Installation without administrator access rights - does not work 

Obviously, regular users usually do not have access to write anything into "Program Files (x86)" folder and that's most probably is a root of the problem.

I used some file monitoring software during plugin installation and saw a following picture during pluginc installation:

.......
New C:\Users\User01\AppData\Local\VirtualStore\Program Files (x86)\IBM\Notes\framework\tmp.txt
New C:\Users\User01\AppData\Local\VirtualStore\Program Files (x86)\IBM\Notes\framework\shared\eclipse\tmp.txt
New C:\Users\User01\AppData\Local\VirtualStore\Program Files (x86)\IBM\Notes\framework\shared\eclipse\features
New C:\Users\User01\AppData\Local\VirtualStore\Program Files (x86)\IBM\Notes\framework\shared\eclipse\features\tmp.txt
New  C:\Users\User01\AppData\Local\VirtualStore\Program Files (x86)\IBM\Notes\framework\shared\eclipse\plugins\tmp.txt
New C:\Users\User01\AppData\Local\VirtualStore\Program Files (x86)\IBM\Notes\framework\shared\eclipse\plugins\com.mycompany.contributed.custom.engine_1.0.1.jar1536594068341.tmp
...........

Installation completed without any errors and Lotus Notes asked to restart.

Before restart I checked jar-files and found them in C:\Users\User01\AppData\Local\VirtualStore\Program Files (x86)\IBM\Notes\framework\shared\eclipse\...

When I tried to restart Lotus Notes - it never launched, hanged up on first windows with "Loading...Please wait".



I tried a following scenario: I reverted my VM back to the very beginning and before installing plugin again I provided EDITOR access to C:\Program Files (x86)\IBM\Notes\framework - with this change I successfully installed plugin with regular user.

Monitoring software showed following changes:



New C:\Program Files (x86)\IBM\Notes\framework\tmp.txt

New C:\Program Files (x86)\IBM\Notes\framework\shared\eclipse\features\tmp.txt
New C:\Program Files (x86)\IBM\Notes\framework\shared\eclipse\tmp.txt
New C:\Program Files (x86)\IBM\Notes\framework\shared\eclipse\plugins\tmp.txt
New C:\Program Files (x86)\IBM\Notes\framework\shared\eclipse\plugins\com.mycompany.contributed.custom.engine_1.0.1.jar1536591689505.tmp
New C:\Program Files (x86)\IBM\Notes\framework\shared\eclipse\plugins\com.mycompany.contributed.custom.engine.dictionary_1.0.1.jar1536591689521.tmp
New C:\Program Files (x86)\IBM\Notes\framework\shared\eclipse\features\com.mycompany.contributed.custom.engine.feature_1.0.1\META-INF\MANIFEST.MF
New C:\Program Files (x86)\IBM\Notes\framework\shared\eclipse\features\com.mycompany.contributed.custom.engine.feature_1.0.1
New C:\Program Files (x86)\IBM\Notes\framework\shared\eclipse\features\com.mycompany.contributed.custom.engine.feature_1.0.1\META-INF
New C:\Program Files (x86)\IBM\Notes\framework\shared\eclipse\features\com.mycompany.contributed.custom.engine.feature_1.0.1\META-INF\LE-0A401.SF
New C:\Program Files (x86)\IBM\Notes\framework\shared\eclipse\features\com.mycompany.contributed.custom.engine.feature_1.0.1\META-INF\LE-0A401.RSA
New C:\Program Files (x86)\IBM\Notes\framework\shared\eclipse\features\com.mycompany.contributed.custom.engine.feature_1.0.1\feature.xml
New C:\Program Files (x86)\IBM\Notes\framework\shared\eclipse\features\com.mycompany.contributed.custom.engine.feature_1.0.1\feature1536591689552.xml
Modified C:\Program Files (x86)\IBM\Notes\framework\rcp\deploy\install.xml
Modified C:\Program Files (x86)\IBM\Notes\framework\rcp\rcplauncher.properties

So, that's all basically...
My current issue is that I am not sure if it is a configuration issue or if I have to rebuild plugin using Eclipse 4x or something else...


I would be grateful for any ideas...

------------------------------------------------------------------------------------------------------
Update on 11.09.2018

Mikkel Flindt Heisterberg gave a head-shot (see comments under post).
So I managed to resolve the problem by adding 

colocation-affinity="com.ibm.rcp.site.anchor.user.feature"

to feature.xml and plugin was installed to user's directory instead of C:\Program Files (x86)\ and that was exactly I needed to.

Friday, September 7, 2018

(RESOLVED) Need help with installation of FP9/FP10: External VM is not valid - it must be a 1.5 or 1.6 Sun or IBM VM

Hi

Today I spent almost a whole day but couldn't install LN 9.0.1 FP10.
This is very embarrassing especially for the one working with Notes for more than 15 years.
Did I become too old?

The story:

1) I rolled out Hyper-V VM with x64 Windows 10 Enterprise (build 1803).
2) Installed standard 9.0.1 for multi users - all was good at this point.
3) Tried to install FP10 - failed with error "The wizard was interrupted before IBM Notes 9.0.1 FP10 could be completely installed.

I started googling by error text "The wizard was interrupted..." but all suggestions didn't work for me.
4) Eventually I didn't have any other options except looking into Installation.log.
I found there following error message:

Line 431: XPD: 9/7/2018 16:23:59 CActionsCommon/GetProperty: DEBUG - Retrieved property: RCP_INVALID_EXTERNAL_JVM_ERROR, Value: External VM is not valid - it must be a 1.5 or 1.6 Sun or IBM VM.

I started googling "External VM is not valid - it must be a 1.5 or 1.6 Sun or IBM VM" and found that FP6 had to fix that error.


So I cleand VM and did everything again, but this time I installed FP6 at first.
FP6 was installed successfully and I (feeling myself on the edge of a victory) started installation of FP10 but got the same dialog with "The wizard was interrupted...". However this time I spotted that error happened almost in the very beginning of FP10 installation - previously (without installation of FP6) it happened in the very end.

I checked installation log again and this time I found there something new:

Line 439: XPD: 9/7/2018 17:30:51 CActionsCommon/GetProperty: DEBUG - Retrieved property: RCP_INVALID_EXTERNAL_JVM_ERROR, Value: External VM is not valid - it must be a 1.5 or 1.6 Sun or IBM VM.
Line 613: 9/7/2018 17:31:06 2018-09-07T05:31:06.6--1:00 CCCUActionsApp/RenameDirectory: ERROR: Maximal retry time exceeded. Consider renaming failed.
Line 615: 9/7/2018 17:31:06 2018-09-07T05:31:06.6--1:00 UninstallJvmUpdate: ERROR: Failed to rename directory C:\Program Files (x86)\IBM\Notes\jvm to C:\Program Files (x86)\IBM\Notes\jvm_old: 5

I googled "Failed to rename directory jvm to jvm_old" - but I only found some posts where IBM confirmed the issue and included it into scope of following fixes but there wasn't any workaround suggested.

I discovered that FP8 worked OK the same as FP6 - the problems happened with FP9 and FP10 only.

That's all - I couldn't do anything eventually but trust me, I tried really a lot:
- I tried to disable Windows Defender, UAC, Firewall
- tried to change Notes folders permissions, owners;
- tried to install LN for a single user
- tried to use other path for installation
- I used some monitoring software trying to catch if any other processes works with Notes-folder during FP10 installation.
Nothing helped.

I would be grateful for any ideas please.

--------------------------------------------------------------------------------------------------------------------------
Update on 9.9.18
I managed to install FP10 IF4 - previously I tried to install FP10 IF2.

Still have issue with FP9 IF1 (SHF55).
I am going to try two things:
1) check if FP9 IF2 (SHF123) works OK.
2) try to use older build of Windows 10, for example 1709.
--------------------------------------------------------------------------------------------------------------------------
Update on 10.9.18

Installed FP9 as well.
The problem was with expired certificate in FP9 installation.
It is a bit shameful and strange in the same time: I had the problem with expired certificate in FP9 installation in past and even made a post about it but that time I clearly saw something about "expired signature" in installation logs. This time installation logs didn't have a word about certificate/signature error.
The difference in installation processes is that previously I used installation with Notes+Designer+Admin but this time I used Notes-only installation.
It's very sad that I forgot about this issue and wasted so much time.
Thank you very much to all who provided suggestions in comments to this post.