Author: <span>kenio.carvalho</span>

  If you plan to upgrade to V2.5.1 of the EditLive! editor included with IBM Connections 4.5 IFR2 and have the original EditLive! V1.0 editor installed, you must remove it before upgrading to a later      version.

To remove EditLive! for IBM Connections 1.0, follow instructions at:
http://docs.ephox.com/display/IBMConnections/Uninstalling+EditLive!+for+IBM+Connections+1.0

You can then install the EditLive! for Connections package included with IBM Connections 4.5 IFR2. For instructions, see:

http://www-10.lotus.com/ldd/lcwiki.nsf/xpViewCategories.xsp?lookupName=EditLive%21+for+IBM+Connections+4.5+IFR2

Uncategorized

Some users make the mistake of sending messages that should not go to some people and  not save the sent message which complicates the use of the recall. I found this documentation in a TechNote that can help solve the problem

Create one LotusScript agent in Domino Directory with all default properties such as it will run on event and target documents are all selected documents.  Paste below code in the agent.

Save the agent and open domino directory from Notes Client.  Select the person documents for which users the mail has to be deleted from their mail file.  And then select Tools–><>.

Once successful, the confirmation message will be popped up.  Please ensure that the id by which agent will be signed should be present in mail file of user’s ACL.

Change subject text in below code.

Option Public
Option Declare

%Include "lsconst.lss"
Sub Initialize
        Dim s As New NotesSession
        Dim db As NotesDatabase
        Dim view As NotesView
        Dim dc As NotesDocumentCollection
        Dim doc As NotesDocument
        Dim db1 As NotesDatabase        
        Dim noofrec As Integer        
        Dim mailserv As String
        Dim mailfl As String
        noofrec =0
        Dim doccol As NotesDocumentCollection
        Dim searchstring As String
        Dim doc1 As NotesDocument
        Dim doc2 As NotesDocument
       
        Set db=s.Currentdatabase
        Set view=db.Getview("($Users)")
        Set dc=db.Unprocesseddocuments
        Set doc=dc.GetFirstDocument
        searchstring "hi swati how r u"  'change this text
       
        While Not doc Is Nothing
                mailserv = doc.GetItemValue("MailServer")(0)
                mailfl = doc.GetItemValue ("MailFile")(0)
                Set db1 = s.GetDatabase(mailserv,mailfl)
                If Not db1 Is Nothing Then
                        If db1.IsOpen Then
                                Set doccol = db1.FTSearch(searchstring,0)
                                Set doc1 = doccol.GetFirstDocument
                                While Not doc1 Is Nothing
                                        Set doc2 = doccol.GetNextDocument(doc1)
                                        Call doc1.RemovePermanently(True)  
                                        Set doc1 = doc2
                                Wend
                                noofrec = noofrec + 1
                        End If
                End If
                Set doc = dc.Getnextdocument(doc)
        Wend        
        If noofrec <> 0 Then
                MsgBox noofrec & " record(s) successfully updated " , MB_OK, "Lotus Notes"
        End If
        End sub

Uncategorized

JRE Bugs and Compatibility with WCM FileTransferApplet and Ephox EditLive
Due to changes and bugs introduced to the JRE from Oracle, there have been some compatibility issues with WCM’s FileTransferApplet and EditLive rich text editor. Some of the more problematic versions include recent updates of JRE 1.7 (example: update 25, 45, 51) and JRE 1.6 (example: update 45).

See the TechNote here

Uncategorized

It is not so frequent for me to build Windows 2008 images. Yesterday when i made the Windows VM an add a second disk the error message above was displayed

Windows Server: The operation failed to complete because the Disk Management console view is not up-to-date

Context:
 
I was trying to format a newly added disk on Windows Server 2008 R2 however, couldn’t format the disk or assign a drive letter to the disk.

The Server was a Virtual Machine hosted on a VMware Workstation 10. I tried to refresh the disk management console and even did restart the server however, same error persisted.

To my suprise, there were no warnings or erros in event viewer for this issue. Since it was a virtual machine, I removed the virtual disk and added a new virtual disk on the VM but in vain. No luck at all, error didnt vanish.

Finally to fix this issue, I had to use diskpart and format the disk.

Complete instructions here

Uncategorized

Moderation is a component in IBM® Connections  that allows moderators and Community owners to better control what is displayed in certain applications. Moderators can review Blogs, Forums, and Files content before it is posted to Connections, and manage content after it is added to IBM Connections. This article provides a detailed introduction to Connections Moderation configurations so you can better understand and use it.

http://www-10.lotus.com/ldd/lcwiki.nsf/dx/Using_the_Moderation_application_in_IBM_Connections_4.0

Uncategorized

One of our Connections customers has the following as a requirement:

Inactivate users based on LDAP GROUP

Solution

The solution I found was to create a text file based on LDAP group and run sync_all_dns.sh command and then run the command delete_or_inactivate_employees.sh

The java program

The class bellow read the LDAP and verify if the user is a member of the group. I not found good information on how to use the ITDS API to check if a user is a member of a group, so i need to do it “manually”.

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Properties;
import javax.naming.ldap.InitialLdapContext;

import javax.naming.*;

import javax.naming.directory.*;

public class GroupSearch

{

     public static boolean compara(String nome, ArrayList grupo) {

             
             boolean blnFound = grupo.contains(nome.toUpperCase());
             
             return blnFound;
     }

     @SuppressWarnings({ “rawtypes”, “unchecked” })
     public static void main(String args[])

     {

             InitialLdapContext ctx = null;

             Hashtable hashtable null;
             
             Properties prop = new Properties();
               
                             
             try

             {
                     //load a properties file
                 prop.load(new FileInputStream(“config.properties”));

            //get the property value and print it out
       
                 String url = “ldap://”+prop.getProperty(“server”);
                 String username = prop.getProperty(“username”);
                 String password = prop.getProperty(“password”);
                 String base = prop.getProperty(“base”);
                 String groupName = prop.getProperty(“groupFilter”);
                 String userFilter = prop.getProperty(“userFilter”);

                     // Set up LDAP config settings

                     hashtable = new Hashtable();

                     hashtable.put(“java.naming.ldap.version”, “3”);

                     hashtable.put(“java.naming.factory.initial”,
                                     “com.sun.jndi.ldap.LdapCtxFactory”);

                     hashtable.put(“java.naming.security.authentication”, “Simple”);

                     hashtable.put(“java.naming.referral”, “follow”);

                     hashtable.put(“java.naming.provider.url”, url);

                     hashtable.put(“java.naming.security.principal”, username);

                     hashtable.put(“java.naming.security.credentials”, password);

                     // Make LDAP connection

                     ctx = new InitialLdapContext(hashtable, null);

                     System.out.println(“Connection established”);

                     // Set up Search Controls”

                     SearchControls sc = new SearchControls();
                     SearchControls gc = new SearchControls();

                     sc.setSearchScope(SearchControls.SUBTREE_SCOPE);
                     gc.setSearchScope(SearchControls.SUBTREE_SCOPE);
                     
                     sc.setReturningAttributes(new String [] { “uid”,”sn”,”cn”});

                     // perform search on directory
                     System.out.println(“Searching the directory please wait.”);
                     NamingEnumeration results = ctx.search(base,userFilter,sc);
                     NamingEnumeration groupResult = ctx.search(base,groupName, gc);
                     
                     // loop until we have gotten all entries returned by search

                     // Arraylist with group members

                     ArrayList members = new ArrayList();
                     while (groupResult.hasMore()) {

                             SearchResult gr = (SearchResult) groupResult.next();
                     

                             Attributes gattrs = gr.getAttributes();
                             NamingEnumeration gattrsList = gattrs.getAll();

                             while (gattrsList.hasMore()) {

                                     Attribute gatribute = (Attribute) gattrsList.next();
                                     NamingEnumeration values = gatribute.getAll();

                                     while (values.hasMore()) {

                                             members.add(values.next().toString().toUpperCase());

                                     }

                             }

                     }
                     // dump users to file
                     System.out.println(“File createdrn BUILD SUCCESSFUL”);
                     File file = new File (“delete_or_inactivate_employees.in”);
                     if (!file.exists()){
                             file.createNewFile();
                     }
                     FileWriter fw = new FileWriter (file.getAbsoluteFile());
                     BufferedWriter bw = new BufferedWriter(fw);
                     
                     while (results.hasMore())

                     {

                             // get the SearchResult object

                             SearchResult sr = (SearchResult) results.next();
                             Attributes attributes=sr.getAttributes();
                             Attribute shortName = attributes.get(“sn”);
                             //ouptput DN of entry
                             
                             
                             String nome = sr.getName().toString()+”,”+base;
                             Attribute userName = attributes.get(“uid”);
                         String usuario = userName.toString();
                         
                                //IF A USER ARE ON THE GROUP WRITE TO FILE                                
                             if (compara(nome,members)){
                                             
                                     String dn = usuario.replace(“uid: “, “$dn:uid=”)+”,”+base+”rn”;
                                     String cnshortName.toString().replace(“sn: “,”uid:”)+”rn”+”.”+”rn”;
                                     bw.write(dn+cn);                
                             }
                                     
                     }

                     bw.close();        
                                             
                     // Close the connection to LDAP

                     ctx.close();

             }

             catch (Exception ex)

             {

                     System.out.println(“EXCEPTION = ” + ex.toString());

             }

     }

}

Configuration

The file config.properties set the parameters. GroupFilter is the filter for the desired group and userFilter is the filter to search for users on the ldap server. This filter must be the same used on the profiles_tdi.properties to avoid problems.

This file must be on the same folder of ExportLdap.jar

The file must have the following lines:

Server=
username=
password=
base=
groupFilter=
userFilter=

I put the files ExportLdap.jar and config.properties on /Wizards/TDIPopulation/linux/TDI

For example :

server=yourldapserver:389
username=cn=root
password= base=
groupFilter=(&(objectclass=groupOfUniqueNames)(cn=DenyGroup))
userFilter=  (&(uid=*)(objectclass=inetOrgPerson))

Running the solution

Put the files config.properties and ExportLdap.jar in the folder:

/Wizards/TDIPopulation/linux/TDI

Run the  script sync_all_dns.sh

Run java –jar ExportLdap.jar

the program will genereate the file  delete_or_inactivate_employees.in

The final step run ./delete_or_inactivate_employees.sh script

Uncategorized

The IBM Web Content Manager Library Dependency Graph v1.0 (LDG1.0) is a portlet that visualizes your Web Content Libraries and their dependencies. The portlet allows you to see very quickly the relative size of a Web Content Library, as well as identify any interactions between your libraries. It even allows you to modify those interactions and dependencies between those libraries in place.

Features include:

  • Visualization of Web Content Libraries relative size.
  • Visualization of dependencies between Web Content Libraries.
  • View and alter references between libraries in place.
  • Delete multiple dependent libraries within a single operation.
  • Save Library Dependency Reports for later access.

Uncategorized

When trying to update a existing installation using IBM Installation Manager, the following message appears:
Error: The WebSphere® Application Server is currently in use. Please stop the server

I reboot the server and try again but no success.  Installation Manager show the message . I check the process using ps -ef | grep java and no java process are running.

The solution:

Delete the pid file on logsservername

Uncategorized

There are changes and enhancements to return receipt behavior on both outgoing and incoming mail messages.
For Notes client users, the administrator can configure the behavior through policies:

Image:What´s new in Policies for Domino 9.0

For Inotes clients the Return Receipt behavior is set via notes.ini settings:

 iNotes_WA_SendReturnReceipt=2  display prompt giving user the choice whether to acknowledge the return receipt
 iNotes_WA_SendReturnReceipt=1  always send return receipt – default behavior
 iNotes_WA_SendReturnReceipt=0  do not send return receipt

Uncategorized

Today i started my Domino server and the HTTP task doesn´t loaded. The console showed a message indicating the port 80 is in use.

I shutdown the server and search for a process listening on port 80 but how?

Use netstat -ano on the command pronpt.  

Image:How to find which process is using a TCP Port in Windows

You will see thad the PID 7152 is using the TCP port 80.  

Go to taskmanager and add a column to view the pid . I discover that skype was using the port 80. So i start skype after Domino starts.

Image:How to find which process is using a TCP Port in Windows

Uncategorized