05/02/2012

@GetMachineInfo: New macro for probing user's workstation

Category
Bookmark : del.icio.us  Technorati  Digg This  Add To Furl  Add To YahooMyWeb  Add To Reddit  Add To NewsVine 

I came across a new @Function that I was always always hoping to see added to Lotus Notes one day. @GetMachineInfo has been been introduced in 8.5.3 and can be very useful to both administrators and developers.

Administrators can use it with policies to distinguish between different workstations that any given user is running Notes on. As per IBM's Technote 1501673, "in prior versions of the Notes Client, and policy control, an administrator could target an individual, but not a specific machine configuration for that individual. For certain settings and customers, this made the enforcement of specific settings problematic, either because a user had multiple machines, or because the configurations and usage were not easily partitioned. "

Developers can use it in applications that need to be aware of the user's environment, or applications that collect information about user's workstations (eg. corporate computer inventory) to extract info ranging from specs on hardware (memory, disk space, whether it's a laptop or desktop) to data on Notes client itself (Standard vs. Basic, Multi-user vs. Single User install, does it have Designer or Admin clients installed). Some of this was possible before but you had to use different @Functions (or LotusScript methods/properties) for different things often in combination with queries to Windows Registry and VMIService objects and a lot more code. Now, most of it can be accomplished with just one simple @Function that is platform independent (yes, it works on a Macintosh as well as it does on a Windows PC).

Don't look for any information on it in your Domino Designer 8.5.3 help file, because you will not find anything useful. For some reason, help file that shipped with 8.5.3 was not updated to include any info on this. Refer to IBM's Technote 1501673 for detailed description.

I'm just a bit disappointed that this new formula does not include any keywords for finding out machine's operating system version, and processor info. In my code, I'm currently doing it by querying Windows Registry and VMIService objects, but obviously this works only on Windows based machines. I need to do the same on Macintosh..., does anybody know how to accomplish this with Lotus Script on a Mac?

Syntax for @GetMachineInfo:

@GetMachineInfo( [Keyword]; "Needed for some Keywords string" )

Keywords:

IsLaptop boolean return True if machine is a laptop, otherwise false
IsDesktop boolean return True if machine is NOT a laptop, otherwise false

Example:
info := @GetMachineInfo([IsLaptop]) ;
msg := @If( info ; "This machine is a laptop" ; "This machine is a desktop" ) ;
@Prompt([Ok] ; "" ; msg )

A picture named M2


MachineName string return Name of the machine
boolean return True if MachineName string after keyword matches this machine's MachineName, otherwise false

Example:
info := "Machine name is " + @GetMachineInfo([MachineName]) ;
@Prompt([Ok] ; "" ; info )

A picture named M3

Memory number return Total amount of memory (RAM)

Example:
info := "Total RAM installed " + @Text(@GetMachineInfo([Memory])) + " MB" ;
@Prompt([Ok] ; "" ; info )

A picture named M4

DiskSpace number return Amount of free disk space
Note: With this keyword, you can add a second parameter for the drive to scan for free space. If this parameter is not passed to the function, free space for the first (logical) drive - for example, drive C on Windows system - is displayed.

Example:
info := "Drive M free space is " + @Text(@GetMachineInfo([DiskSpace];"M:")) + " KB" ;
@Prompt([Ok] ; "" ; info )

A picture named M5


IP string/list return String representation of the IP address(es) in the form XXX.XXX.XXX.XXX , otherwise "" (null string) if not available
boolean return True if pattern IP string after keyword matches this machine's IP address, otherwise false

Example:
info := @GetMachineInfo([IP]) ;
@Prompt([Ok] ; "" ; info )

A picture named M6

MAC string/list return String representation of the MAC address(es) in the form XX:XX:XX:XX:XX:XX , otherwise "" (null string) if not available
boolean return True if MAC string after keyword matches this machine's MAC address, otherwise false

Example:
info := @GetMachineInfo([MAC]) ;
@Prompt([Ok] ; "" ; info )

A picture named M7

IsSingleLogOn boolean return True if machine has Notes client installed with "single sign on", otherwise false

IsMultiUser boolean return True if machine has Notes client installed as Multi-User, otherwise false

HasDesigner boolean return True if machine has Designer client installed, otherwise false

HasAdmin boolean return True if machine has Admin client installed, otherwise false

IsStandard boolean return True if machine is running Standard Notes client, otherwise false

EnvVariable string return Requires string of the variable name in Notes.ini to read, and returns the value of that ini variable or "" (null string) if not found

SysEnvVariable string return Requires string of the variable name in system environment to read, and returns the value of that variable or "" (null string) if not
found

04/11/2012

RoamingUserUpdateFlag Mystery

Category
Bookmark : del.icio.us  Technorati  Digg This  Add To Furl  Add To YahooMyWeb  Add To Reddit  Add To NewsVine 

When roaming is enabled by the administrator on the existing Person in Domino Directory, several fields with names starting with "Roam..." are being populated with data. While most of them are well documented or their purpose is easily understood, among them is the one mysterious field called "RoamingUserUpdateFlag". Coincidentally, this is also the name of the notes.ini parameter that gets added to the client's notes.ini at the time roaming was enabled.

If you Google "RoamingUserUpdateFlag", you will find references to bunch of documents that make an attempt to document this parameter, but they are all saying that "Currently no further information is known about this variable ".

I noticed that this field in Person document gets populated with a date/time that is 21 days from the moment that roaming was enabled by the administrator. I wonder if this is supposed to be some sort of expiry date for the AdminP to complete the process of enabling each user workstation for roaming... Does anybody have any information about this?

A picture named M2


03/26/2012

'ImapDb' object has no attribute 'notify_folder_emptied' - Issue with IMAP on BlackBerry Playbook

Category
Bookmark : del.icio.us  Technorati  Digg This  Add To Furl  Add To YahooMyWeb  Add To Reddit  Add To NewsVine 

We are experiencing intermittent outages of IMAP on BlackBerry Playbook. Much of the time, Playbook is unable to connect to the Domino IMAP server and displays this error message: "'ImapDb' object has no attribute 'notify_folder_emptied'". Both IBM and RIM Tech Support have no idea what is causing this. It seems that removing the IMAP account from the Playbook and adding it back solves the issue, but only temporarily. The error eventually comes back. the strange thing is that at the same time the Playbook is unable connect to the IMAP server, other devices do not exhibit any connectivity issues. Did any one encounter this?

So far, I only found one post on this issue: http://forums.crackberry.com/blackberry-playbook-f222/imap-email-problem-709130/


A picture named M2

03/26/2012

IBM Lotus Traveler on BlackBerry Playbook

Category  
Bookmark : del.icio.us  Technorati  Digg This  Add To Furl  Add To YahooMyWeb  Add To Reddit  Add To NewsVine 

IBM does not officially support Traveler on the new BlackBerry Playbook OS 2.0, but our testing shows that for the most part Traveler works great on it as an integrated app (ie. added as an account through the settings screen). So far, we only run into two issues that I described below. To successfully add a Traveler account to your Playbook, you have to use Advanced Setup, select Microsoft Exchange ActiveSynch (ironic, isn't it?), leave domain empty, and instead of just typing the server name you have to use this format: yourservername.yourdomain.com/servlet/traveler.  

These are the issues that we run into so far:

#1 If you accept Notes meeting invitation on your Playbook, the meeting will not be showing on your calendar in Lotus Notes. It will continue showing as unprocessed invitation.

#2 You cannot add more than one Traveler (MS Active Sync) accounts to your Playbook, if Lotus Traveler Policy Settings in Domino Directory (or Traveler Server settings in Traveler db) are configured to "require device password:

A picture named M2

With device password being mandatory, when you add a second Traveler (MS Active Sync) accounts to your Playbook, a message comes up at the end of the setup to "Confirm Wipe". If you cancel, your new account setup will not be saved. If you click OK, your existing Traveler account will be removed form the Playbook and replaced by this one.

A picture named M3

01/19/2012

Lotusphre 2012 - The end of an era?

Category
Bookmark : del.icio.us  Technorati  Digg This  Add To Furl  Add To YahooMyWeb  Add To Reddit  Add To NewsVine 

A picture named M2

This was number five for me. I started writing this in Orlando, and I sat on it for a few weeks wondering if I should really post this. But I think it needs to be said.

If I was going to sum up this year's Lotusphere in one sentence, I would say that yellow should be added to the endangered species colours list. At this year's gathering of the bumble bees (not really), yellow was drowning in the sea of blue, black and every other colour. The backpack was all black, yellow only on the inside (thanks IBM, we got the message). Lotusphere's bottled water labels were white. Maybe it was just me, but it seemed like there were more people wearing blue badges (IBMers) and purple badges (partners) than yellow badges (actual customers). Interestingly enough, customers' badges were still yellow... Did someone forget to change them?

I also heard through the grapevine that the attendance this year was really low. This was evident in particular at the Welcoming Reception on Sunday. There were actually empty tables on the beach and in the pool area. I have been to four Lotuspheres before and do not remember seeing empty tables before.

Then, there was this thing with the name. It seems that IBM is dropping "Lotus" not just from the names of their products. Although this year's conference was still called Lotusphere (apparently there was a big debate about this at the top), it does not take an oracle to predict that next year it will most likely be called something else. And we were already introduced to the new name this year, although nobody dared to say it on record just yet. Lotus, and especially Lotus Notes and Domino, were no longer the stars of the Lotusphere. This year, IBM Lotus Connections, took the centre stage. Being a die-hard Notes fanatic, I could hardly find any sessions that were geared towards audiences like me. I felt like a yellow dinosaur attending EverythingElseAndNotMuchLotusPhere. I wonder if people didn't submit any proposals, or if they did and perhaps were turned down?

Finally, I knew that something was really wrong when I came to the Gurupalooza session and there was no crowd on the hallway waiting to storm into the room as soon as the doors open. I really miss those days. Ten minutes until the start of the presentation the room was not even 20% full. That was really depressing. Once the session started, there were still way too many empty seats left. The tone of the session was different too. Although it was still very funny and insightful, you can sense some desperation among the people on the stage. I mean just look at Paul... His face says it all: "That water just doesn't taste the same...."

A picture named M3

A picture named M4

01/06/2012

Manage private views in Lotus Notes database

Category
Bookmark : del.icio.us  Technorati  Digg This  Add To Furl  Add To YahooMyWeb  Add To Reddit  Add To NewsVine 

I just discovered that you can now see and manage all private views inside NSF file using Domino Administrator client. Not just your private views, all private views including those that belong to other users as well. I'm not sure when this functionality was added, I must have missed this announcement. In the past, we used to have to use some tricks, (like creating new view and saving it without any name), or scripts to extract info about other user's private views.

Now, you just need to open the server in Domino Designer, click on Files tab to list the files on that server, turn on Full Access Administration, right click on any file and select Manage Views form the pop-up menu, and voila!

A picture named M2

You should see something like this (I'm using Domino Designer 8.5.3):

A picture named M3

01/04/2012

Screen Capture tool no longer available as of Notes 8.5.3 to Sametime Entry users

Category  
Bookmark : del.icio.us  Technorati  Digg This  Add To Furl  Add To YahooMyWeb  Add To Reddit  Add To NewsVine 

I just LOVE to try all the new stuff that gets added to each maintenance release of Lotus Notes. It makes me feel like a kid opening Christmas presents. I savour and enjoy each one of them. And I appreciate the effort that the IBM put into improving their product and listening to the feedback from their customers. I really do. But I also hate when I discover that some things that were available in previous versions are no longer working properly, or worse, have been removed purposely without any notice or fair justification. Especially when it is something as useful  as the Screen Capture tool built into the Sametime Contacts pane in the Sidebar, which I was using practically every day, I was very disappointed to find out that after upgrading my Notes client to the latest 8.5.3, this tool is no longer available to Sametime Entry users. The icon for it is now greyed out, just like the icons for sending files, sending broadcasts, inviting to a meeting room, and inviting to instant meeting (which they were from the beginning).

A picture named M2
Fig. 1 Sorry to say this, but this screen capture was taken using Microsoft Windows 7 Snipping Tool.

Yes, I know. If we get the full version of Sametime, I can continue to enjoy this wonderful feature. But we are not getting it. It's something beyond my control, which just adds to my desperation. We have been using Sametime Entry ever since it was released and bundled/integrated with the Notes client. That is since the release 6.5 in 2003. For eight years the Screen Capture tool was there and available to the Sametime Entry users like me. Not anymore.

I contacted IBM Tech Support to get an official answer on this back  in November, although I suspected I knew what the answer will be. Sadly, I wasn't wrong.

IBM: "I got a response from dev about a similar PMR, and unfortunately the change is most likely fixing a "bug" where the screenshot button was not greyed out in situations when it was supposed to be."

Me: "I will be honest with you and tell you that this makes some of us here very upset. I was fearing this scenario, and it seems like it came through... I think that it is a really bad move on behalf of IBM that you effectively take away something that has been made available for many years! It does not matter that this tool was made available to Sametime Entry users unintentionally, you should not make the users to pay the price for IBM developers' mistake. If the goal was to alienate many loyal long-time users and supporters of Lotus Notes like me, then MISSION ACCOMPLISHED! But is it really what IBM-Lotus needs these days? "

IBM: "I understand your frustration, and I will pass your comments along to my manager. Thank you for using IBM Lotus Support."

Sorry for being so negative, but things like this really get to me. There. I got it off my chest. Now, let's focus on something positive, like Lotusphere 2012 and the announcements that will surely come with it. Can't wait! I'll be there...

10/18/2011

Tweak The Auto-Populated Groups Feature In Domino 8.5.3

Category  
Bookmark : del.icio.us  Technorati  Digg This  Add To Furl  Add To YahooMyWeb  Add To Reddit  Add To NewsVine 

Back in 2008, we found this great blog post on eknori.de on how to "Tweak The Auto-Populated Groups Feature In Domino 8.5". It describes a very elegant solution that does not require any modifications to the existing design elements in pubnames.ntf. Although most likely not supported by the IBM, this works great and we have implemented it in our environment with great success. By the way, I'm still unclear why IBM does not include this in their template..., maybe someone knows the reason?

We are now testing out the new 8.5.3 release and I noticed that after upgrading our test Domino server to this new version and replacing the design of the Domino directory with the new template, this stopped working. Although the subform "Custom | Autopopulate99" is still in there, the Group form no longer offers "Custom" as a choice in the "Auto Populate Method" field".

A picture named M2

After comparing the new and the old form and subforms embedded in it, I noticed the following differences:

1. Formula inside the computed hidden field "SubformsList" on the "$GroupInheritableSchema" subform has changed from SubformsList (field was referencing it's own value) to "Home Server|1".

2. Postopen and Postmodechange events on the "$GroupInheritableSchema" subform no longer contain this code:

A picture named M3

...although the Sub  GenerateSubFormsList is still in "(Globals") without any changes to its code from the previous release.

Once I made these two changes to "$GroupInheritableSchema" subform in our customised uwinpubnames.ntf, the "Custom" auto-populate option was back and working again. So that is one way to fix it. Unfortunately, we are now forced to make changes to the existing design element in the original Lotus template (sorry, I meant IBM template). Luckily, this was not an issue for us, because we are not using an out-of-the-box pubnames.ntf. We actually have implemented many more modifications to the original directory template over the years, and we use our own customised version of it. Yes, this means every time new release of Domino comes out, we have to port all these customizations after creating another copy (not replica) of the newly released pubnames.ntf, but it doesn't realy take up that much time. The drawbacks associated with this extra chore are outweighed by the benefits of our customisations.

In the end, I removed any code from the Postopen and Postmodechange events on the "$GroupInheritableSchema" subform so that Sub  GenerateSubFormsList will NOT be called to populate the "SubformsList" field (I explain why in the last paragraph). The only change that I made to the 8.5.3 version of  the "$GroupInheritableSchema" subform was to replace the formula in the computed hidden field "SubformsList" on the "$GroupInheritableSchema" subform from  "Home Server|1" to  "Home Server|1" : "Custom|99"

A picture named M4


So the question is why was this changed by IBM in the 8.5.3 pubnames.nst template? I think the answer may lay in this IBM technote:

LO56189: ADD GROUP AND EDIT GROUP PERFORMANCE SLOW, TAKES 30+ SECONDS TO COMPLETE
http://www-01.ibm.com/support/docview.wss?uid=swg1LO56189

I suspect that the culprit of the slowness reported by some customers was the code in  the Sub  GenerateSubFormsList, that's why in the new template IBM decided to bypass it.

05/05/2011

Warning: DAOS object minimum participation size = 4096, which is below the minimum recommended value of 64000

Category  
Bookmark : del.icio.us  Technorati  Digg This  Add To Furl  Add To YahooMyWeb  Add To Reddit  Add To NewsVine 

Help file in Domino Administrator 8.5.2 says:

"Minimum size of object before Domino will store in DAOS : The minimum total size, in bytes, of any attachment to be consolidated (the default is 4096 bytes). Enter a number. Consolidating attachments of very small size is not worth the processing effort because it does not yield much disk space saving."

4096 bytes is 4 Kbytes, and that's what we have used to configure DAOS on our servers from its introduction in release 8.0. However, after installing one of the maintenance releases on the server (currently at 8.5.2FP2 on AIX 5.3 64-bit), it now displays this message on the console after starting up:

"Warning: DAOS object minimum participation size = 4096, which is below the minimum recommended value of 64000".

After some digging, I discovered that the help file fails to mention that the default value in this case is not the recommended value (ie. not anymore). That's a bit odd, because usually you want your default to be the recommended value. In this case, the default value is the minimum allowed value, according to the Notes and Domino Wiki entry on DAOS:

"“Minimum size of object before Domino will store in DAOS” (bytes): The default is 4096. 64,000 is recommended."

I contacted IBM Tech Support on this, and this is what they told me:

"Originally the recommended minimum size to use for the 'Minimum size of object' was 4096 bytes, however in later releases this has been increased to 64000 bytes as it was found that in most cases the gains from storing such small attachments was not enough for the processing required. So, for your version of Domino the recommended value for this setting is "64000" and the help file is out of date at this time. Also, please note that this value is set in bytes, meaning that 4096 bytes equates to 4KB,  similarly 64000 is for about 64Kb attachments. "

Note the "about" before "64Kb" because it's 4096 bytes that comes to exactly 4 Kbytes, while 6400 bytes comes to 62.5 Kbytes, if you are using 1 Kbyte = 1024 bytes conversion factor. If one wants to go for exactly 64 Kbytes limit, then the actual number would be 65536 bytes.

We used DAOS from the day it was introduced and we went with the original default/recommended value of 4096. Back then, enabling DAOS gave us some very good results (see my original "DAOS Rocks!" post), and I guess we were lucky not to get any noticeable performance degradation resulting from setting our  minimum size of DAOS attachments to such a small number (as per today's updated recommendations).

Recently, we had to temporarily disable DAOS on two of the three mail servers in the cluster so that we could copy all mail files to another server at the OS level. This gave me another opportunity to compare the "before" and "after" DAOS numbers. This time we went with 1 Mbyte limit for DAOS inclusion (ie. 1048576 bytes), instead of the original setting of 4 Kbytes (4096 Kbytes), and later lowered it to 0.5 Mbyte (524288 bytes).

smail:  552 files (shared mailboxes)
mail: 2,943 files (personal mailboxes)
File system
DAOS off,
all attachments stored inside NSFs
DAOS on,
with 1 MB limit
DAOS on,
0.5 MB limit
path
total allocated
free
used
free
used
free
used
/opt/lotus/notesdata/mail
707,788,800
163,260,780
544,528,020
334,571,836
373,216,964
376,573,016
331,215,784
/opt/lotus/notesdata/smail
63,963,136
14,276,104
49,687,032
27,849,784
36,113,352
32,015,724
31,947,412
/opt/lotus/DAOS
340,787,200
340,734,816
52,384
253,309,740
87,477,460
228,316,596
112,470,604
TOTAL (Kbytes)
594,267,436
496,807,776
475,633,800
TOTAL (Gbytes)
567
474
454


These results show that by setting the minimum size of DAOS attachments to 1 MB, we recovered 93 GB of space. By lowering the limit to 0.5 MB, we recovered additional 20 GB.


More Info on DAOS:

DAOS Best Practices - Optimum Minimum Size For Participation
http://www-10.lotus.com/ldd/dominowiki.nsf/dx/daos-best-practices#Optimum+Minimum+Size+For+Participation

05/02/2011

Moving users to new server occasionally corrupts location document.

Category
Bookmark : del.icio.us  Technorati  Digg This  Add To Furl  Add To YahooMyWeb  Add To Reddit  Add To NewsVine 

Recently, we had a serious failure of one of the three Domino servers in our cluster. We had to move people to another server using "Move to Another Server" tool in Domino Administrator 8.5.2. Later, we had to move them back, and we took this opportunity to split all our user's population evenly between the three servers in the cluster. In the end, we used this tool on every one of our 2,917 users.

Once I updated their home server assignment using Domino Administrator, the next time they log into Notes, a process called Dynamic Client Configuration runs on the client and it supposed to update their location settings to match those in Domino Directory. Around the same time we changed people's home server assignment, we started getting reports of users being unable to run Notes because they were getting "Warning: unexpected MIME" error on start-up, and when they clicked "OK", Notes would shut down. We run Notes and Domino for 10 years+ here, and I never encountered this error message before. Thanks to Andy's blog post "Another Weird MIME Error", I was able to quickly determine that the culprit was a corrupted location document. Unfortunately I was not able to find a relevant IBM's technote on this...

I suspect that for some reason the Dynamic Client Configuration process may be corrupting user's active location document in some cases. The good news is, that I used this tools to update 2,917 users, and so far the number of calls related to this issue is less than 10. That's less than 0.3%.

RSS FEEDS

Browse By Day

Me

bodek@uwindsor.ca
519-253-3000 x2801

BodekSept2006Small.jpg

Powered By

Domino BlogSphere
Version 3.0.1 Beta 6