Central repository of known locations for Sametime 7.5

If you have Sametime 7.5 installed and use the location awareness you’ll have a file called locprofile-config.xml holding the locations you have configured so far (mine is in C:Documents and Settingslekkim.HQApplication DataSametime.metadata.pluginscom.ibm.collaboration.realtime.location).

The locations are identified by the network you are connected to and is identified by the current IP-subnet and the MAC address of the default gateway.

<?xml version="1.0" encoding="UTF-8"?>
<locprofconfig>
   <locprofiles>
      <locprofile profilename="192.168.1.0 00:09:7C:2B:74:88       ">
         <locations>
            <locip>192.168.1.0</locip>
            <macaddr>00:09:7C:2B:74:88</macaddr>
         </locations>
         <personalloc>it-inspiration hq</personalloc>
         <city>københavn k</city>
         <country>DK</country>
         <postalcode>1058</postalcode>
         <primphone>70223141</primphone>
         <shareloc>true</shareloc>
         <timezone>Central European Time (GMT +1)</timezone>
      </locprofile>
      <locprofile>
         ...
      </locprofile>
      <locprofile>
         ...
      </locprofile>
   </locprofiles>
</locprofconfig>

At present the file is person dependent but since it is part of a plugin but I think it would be really cool if parts of the file could be populated from a central repository via an extension point. This way the Sametime Connect client would automatically display the correct location of the user throughout the company without each user having to update the file themselves. It would also mean that the information could be entered and displayed in a consistent manner.

Of cause the user would still have to specify the location details for custom locations such as hotels, home work stations etc. but I think it would make life easier for the majority of users.

Just an idea…

Gems from the 7.0.2 release notes

  • Mail file
    • Allow user to expand public groups to remove certain addresses
      The functionality is created using a special $-field called $ExpandGroups which you might want to use in your own applications:

      FIELD $ExpandGroups := @DeleteField;
      @SetField("$ExpandGroups"; "3");
      @Command([ViewRefreshFields])
      
    • Calendar documents which are marked ‘Private’ now get populated in the busytime.nsf without calendar details, but still visible if a delegate can access the mailfile.
  • Domino Designer
    • Support for additional DXL design elements
      New elements for Shared Columns, Shared File Resources, and Shared Stylesheet Resources have been added.
    • User-defined HTML tag attributes
      User-defined attributes can now be added to the tag generated by the web engine. When the field $$HTMLTagAttributes is present on a form, its contents are placed in the attribute list of the tag. For more information, see “Additional HTML-related field attributes” in these release notes
    • Custom declaration
      Users can now specify a custom declaration on a per form basis. When the field $$HTMLFrontMatter is present on a form, its contents will be placed in the generated HTML, ahead of the tag, and the web server will not generate anything there automatically. For more information, see “Additional HTML-related field attributes” in these release notes.
  • Domino Server
    • Allow for basic authentication of some URLs
      Domino 7.0.2 allows certain URLs, for example those that generate RSS feeds, to use Basic Authentication, even if Domino Session Authentication is in effect.

Apart from the changes listed above a bunch of notes.ini variables has been made obsolete so I recommend you go through the list yourself. There are a number of iNotes variables in there (iNotes_WA_*).

7.0.2 also adds iCal support but as a developer you might want to know that the iCal import is limited to 500 documents per file. The following is from the release notes: “Users can import iCalendar files with a maximum of 500 documents; use multiple imports for more than 500 documents.” This could be a problem if you are going to import large calendars. Unfortunately there isn’t a programmatic way of importing the iCal file so you have to go through the File menu.

As always you want to pay special attention to chapter 3: Known limitations, problems, and workarounds.

Direct link to the PDF version of the Notes/Domino 7.0.2 release notes.

Finding Installshield Tuner on Passport – impossible?

Now I have spent the better part of the morning trying to locate InstallShield Tuner for Notes on the Passport site without any luck. The part number for Notes 7 listed in technote 1226984 (p/n: C47CQNA) doesn’t help either since they appear to be for Microsoft Outlook for Domino… 🙁

I’m quite sure it used to be there…

Update: Apparently the key is to search for p/n CR31VNA on Passport. Why I simply cannot search for the p/n of the actual install (C84T5NA) still doesn’t make any sense to me. Via notes.net

Sametime 7.5 business voes – why doesn’t the picture update?

At the office we are using the business card feature of Sametime 7.5 and up to now it has been working fine since we got past our initial problems with the UserInfoServlet (which made me reverse engineer it). A problem is now appearing though. The problem is that once users update their business card picture in the Domino Directory (we simply populated the field with a “standard” image to begin with) the picture doesn’t update in the Sametime Connect clients. Right-clicking the user in Sametime Connect and selected “Refresh Person Info” doesn’t help either.

Poking around the Sametime folders I found where the cache is kept (“C:Documents and Settingslekkim.HQApplication DataSametime.metadata.pluginscom.ibm.collaboration.realtime.peoplePersonCache” on my computer). In this directory there is a folder per community you have configured in your client. In the folder for our internal community there is a XML-file and an image file per user – the XML file holds the information fetched from the UserInfoServlet-servlet and the image is the business card image.

I thought it was so simple that I could simply modify that last updated timestamp in the XML-file, delete the image file or delete both the XML-file and image file to make Sametime refresh the information. Not so however… 🙁 Exiting the client, manually updating the image and/or modifying the XML-file makes the new information appear when starting the client again.

Looks like the client is caching the information which is all well and good but shouldn’t it update at some point?

I guess that the caching/refreshing is governed by some other setting – maybe in the buddylist. Unfortunately I can’t find any information about this subject. All information is related to initially configuring the stuff.

Limits in Notes 7 junk mail handling?

WARNING: Possible rant coming up… 🙂

It all started when we got a call from the customer saying that they were unable to add additional e-mail addresses to the list of blocked addresses in their shared inbox. Thinking that it had to be a mistake I took a look but they were right. Upon calling the “ToolsBlock Mail from Sender”-action they would get the following message:
“Limit for Blocked Addressses reached. Please delete addressses before adding more.”

The message had me stumped. Why would the developers of the mail template want to limit the number of addresses an user may block? And of all things spam senders are not the thing you want to limit. Anyways I opened the mail template in Domino Designer and took a look at the source code (the customer is running a standard Notes 7 mail template).

The action calls into the BlockUserRules script library where the below snippet code is copy/pasted from. The offending line is 102 in the Declaration section (in bold):

Function run() As Integer
   <snip />

   '// Prevent list to exceed formula total size of 32K
   '// Mostly because Manage List display issues.
   If Not ((Len(Me.m_CalJunkNames.Text)) >= 30000) Then
      ...
   End If

   <snip />
End Function

The reason for the message

A reference is made in the comment above the If-statement to the 32K limit we all know and love and to a display/UI issue. If those are really the reasons I’m a bit disappointed. Lets look at each stated reason in turn.

The 32K limit

As to the 32K limit there are ways around that. Especially for a functionality where there really shouldn’t be an upper limit. If you are unfamiliar with how the functionality is implemented you can learn a lot by using NotesPeek and looking at the CalendarProfile profile document in a mail database with this feature enabled.

When you add addresses to the list of blocked addresses a long list is stored in a field called $Filter_BlockAddressList with summary info (hence the 32K limit) and then compiled into a @Formula mail rule (see the $FilterFormula_XX fields where XX is a zero based integer index value). The values are imploded with xdd as separator (screenshot).

Why not simply let the list of blocked addresses overflow into multiple fields and hence mail rules. I agree that it is more complicated but wrapping this functionality in a class isn’t too complicated. Another option is turning off summary information for the fields since it isn’t shown in any view. There might be a technical reason for not taking the latter approach since I admit that I don’t know how the router reads the mail rules and whether the summary information is required.

The display/UI issue

This is also a bit disappointing. Lotus have to admit that the UI for managing a large list of blocked addresses is hardly excellent as it is (questionable sorting, no way to search for addresses, what does @example.com mean?) but then why not do something about it instead of simply letting it dictate your functionality? None of our customers would let us get away with reasoning like that.

To sum up…

Anyways – we have a customer that unfortunately cannot use the junk mail functionality anymore as it is supplied out of the box. Either they have to pay for custom development or somehow try to cope in other ways that is move part of the list to the server.

The conclusion – they’re not happy…

Recommendations

To not come off as totally negative I thought I would make a couple of suggestions. If nothing else to get them out there as I think it is a great place for an open source initiative.

I would think that the junk mail feature should have the following features:

  • There shouldn’t be a limit to the number of e-mail adresses, domains or hosts you can add to the list.
  • Correct alphabetically sorting of the list of addresses.
  • The list of blocked domains should be separated from the list of blocked addresses for easier management.
  • Users should only be able to add valid addresses to the list.
  • Users should not be able to add an e-mail address where the entire domain is already blocked.
  • The possibility to search for an address or all addrsses with a particular domain name.

P.S.: Did you spot the spelling mistake in the message in the first paragraph? I doubt that addresses is spelled as shown – too many S’es… 🙂

dbgMsg-methods in lotus.domino.AgentBase

Anyone who knows what the dbgMsg-methods in lotus.domino.AgentBase does except simply outputting to the system console?

public void setDebug(boolean)
public void dbgMsg(String);
public void dbgMsg(String, PrintWriter);
public void dbgMsg(String, PrintStream);

Once you call the setDebug-method with a parameter of true, the dbgMsg-methods will output text to the Java Debug Console or the supplied java.io.PrintWriter or java.io.PrintStream.

IBM – Failover does not work for @Db Functions in Notes

Technote 1093915 outlines some information which is nice to remember when using @Formula to access databases in clusters. After considering this technote you might want a scheduled LotusScript or Java agent to discover the replica id of the target database and store the replica id in a profile document for usage by formula agents. This approach is usable if you want failover to work correctly and doesn’t want to hardcode the replica id into agents which I always consider bad practice.

IBM – Failover does not work for @Db Functions in Notes