Hi!
With Connections 1.0.1 and my custom-client-application, I was able to create a new member (acl-entry) for an existing activity by posting an entry to the member-list-url of the activity.
According the following document:
http://publib.boulder.ibm.com/infocenter/ltscnnct/v1r0/topic/com.ibm.help.lotus.connections.api.doc/html/common/member_entry.html
The interesting point in this document is, that the new-member-entry needs an email-element with the email-adress of the new member. The Id and the name of the entry will be ignored on input.
I updated the server to Lotus Connections 1.0.2 and this procedure does not work anymore. I get a HTTP 403 - forbidden.
The server log tells me:
12/6/07 15:20:02:242 CET] 0000002e MemberProfile E org.apache.commons.logging.impl.Jdk14Logger error CLFRA0282E: profile provider could not find member for someId
[12/6/07 15:20:02:258 CET] 0000002e OpenActivitie E org.apache.commons.logging.impl.Jdk14Logger error CLFRA0091E: internal error
com.ibm.openactivities.exception.NotFoundException: CLFRA0282E: profile provider could not find member for someId
at com.ibm.openactivities.internal.service.core.MemberProfileBo.openByMemberId(MemberProfileBo.java:167)
at com.ibm.openactivities.internal.service.core.AclEntryBo.create(AclEntryBo.java:216)
at com.ibm.openactivities.internal.service.core.AclEntryBo.create(AclEntryBo.java:171)
at com.ibm.openactivities.internal.service.core.AclBo.setAclEntry(AclBo.java:340)
at com.ibm.openactivities.internal.service.OpenActivitiesServiceImpl.setAclEntry(OpenActivitiesServiceImpl.java:1257)
at com.ibm.openactivities.atom.actions.AclAction.post(AclAction.java:118)
at com.ibm.openactivities.atom.actions.BaseAtomAction.execute(BaseAtomAction.java:77)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
The id of the entry is set to the string "someId".
It's quite clear, that the connections-server <...could not find member for "someId"> because the id "someId" is supposed to be ignored and so is set to the fictitious value "someId".
It seems, that the create-logic changed on LC 1.0.2 from using the given email-adress to the given id.
If I provide the new entry with an existing id out of the connections-database the whole things works.
So, my questions are:
1) Is this really a fixed change in the API?
2) why has this been changed?
3) how can a client-application find out the connections-internal id of a person? (The internal id is not part of the LDAP)
Regards, Herbert