<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: User/membership creation programmatically fails in 5.11 in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/user-membership-creation-programmatically-fails-in-5-11/m-p/119274#M84089</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I did not have problems with users/group in 5.11. Did you create groups first (newGroup/saveGroup methods in IdentityService)?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 24 Dec 2012 10:49:12 GMT</pubDate>
    <dc:creator>mariusz_cwikla</dc:creator>
    <dc:date>2012-12-24T10:49:12Z</dc:date>
    <item>
      <title>User/membership creation programmatically fails in 5.11</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/user-membership-creation-programmatically-fails-in-5-11/m-p/119273#M84088</link>
      <description>Hi guys,I faced a problem in 5.11, it was OK with Activiti 5.10.I am creating user and membership programmatically - and it fails with "Referential integrity constraint violation"The code is simple:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String username = "someName";&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; User user = identityService.newUser(username);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use</description>
      <pubDate>Mon, 24 Dec 2012 09:49:18 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/user-membership-creation-programmatically-fails-in-5-11/m-p/119273#M84088</guid>
      <dc:creator>oops</dc:creator>
      <dc:date>2012-12-24T09:49:18Z</dc:date>
    </item>
    <item>
      <title>Re: User/membership creation programmatically fails in 5.11</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/user-membership-creation-programmatically-fails-in-5-11/m-p/119274#M84089</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I did not have problems with users/group in 5.11. Did you create groups first (newGroup/saveGroup methods in IdentityService)?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Dec 2012 10:49:12 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/user-membership-creation-programmatically-fails-in-5-11/m-p/119274#M84089</guid>
      <dc:creator>mariusz_cwikla</dc:creator>
      <dc:date>2012-12-24T10:49:12Z</dc:date>
    </item>
    <item>
      <title>Re: User/membership creation programmatically fails in 5.11</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/user-membership-creation-programmatically-fails-in-5-11/m-p/119275#M84090</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Yep - a group exists.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(I tried either already existing grousp like "admin" etc or manually created by newGroup()/saveGroup()).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;And I guess the error happens at commit stage: likely a user is not commited prior to membership committing.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The error does not happen right after a call to identityService.createMembership(..) - the persistent objects (for users)/queries (for memberships) are cashed after it - and only at commit stage it fails.. More then - if I query a user membership after identityService.createMembership(..) - it will display me it.. (but everything crashes in the end of my procedure).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I used the same trivial logic with 5.10 - it did not raise the problems..&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This happens with all databases I tried - Oracle, MSSQL and supplied h2 also.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Did you modify some settings - ? May be I am not familiar with some version-specific settings..&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The only attracting setting for me were:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- in activiti-standalone-context.xml -&amp;gt; defaultAutoCommit - I played with it already - did not help&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- ProcessEngineConfiguration.setTransactionsExternallyManaged(false) - also did not help&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Do you know, is there some possibilities for "manual commit" doing?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Dec 2012 11:49:53 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/user-membership-creation-programmatically-fails-in-5-11/m-p/119275#M84090</guid>
      <dc:creator>oops</dc:creator>
      <dc:date>2012-12-24T11:49:53Z</dc:date>
    </item>
    <item>
      <title>Re: User/membership creation programmatically fails in 5.11</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/user-membership-creation-programmatically-fails-in-5-11/m-p/119276#M84091</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This is exactly what we do in the DemoDataGenerator class of the Activiti Explorer, so this definitely works.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I also created a simple unit test that does exactly what you posted and it works fine.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The only thing that's important is that the Group exists.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;You can easily test this with the identityService.createGroupQuery() call.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;If it's still failing, can you create a unit test of it?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Best regards,&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Dec 2012 12:23:36 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/user-membership-creation-programmatically-fails-in-5-11/m-p/119276#M84091</guid>
      <dc:creator>trademak</dc:creator>
      <dc:date>2012-12-24T12:23:36Z</dc:date>
    </item>
    <item>
      <title>Re: User/membership creation programmatically fails in 5.11</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/user-membership-creation-programmatically-fails-in-5-11/m-p/119277#M84092</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Tijs,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am doing this from Activiti Process. As I could not upload bar/jar to here, I dare insert it here in plain code, sorry..&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My Service task calls this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;package com.trials;&lt;BR /&gt;&lt;BR /&gt;import java.util.logging.Level;&lt;BR /&gt;import java.util.logging.Logger;&lt;BR /&gt;&lt;BR /&gt;import org.activiti.engine.IdentityService;&lt;BR /&gt;import org.activiti.engine.ProcessEngine;&lt;BR /&gt;import org.activiti.engine.ProcessEngines;&lt;BR /&gt;import org.activiti.engine.delegate.DelegateExecution;&lt;BR /&gt;import org.activiti.engine.delegate.JavaDelegate;&lt;BR /&gt;import org.activiti.engine.identity.User;&lt;BR /&gt;&lt;BR /&gt;public class CreateUserDaveWershAndMembership&amp;nbsp; implements JavaDelegate {&lt;BR /&gt; &lt;BR /&gt; Logger LOGGER = Logger.getLogger(CreateUserDaveWershAndMembership.class.getName());&lt;BR /&gt; &lt;BR /&gt; @Override&lt;BR /&gt; public void execute(DelegateExecution execution) throws Exception {&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IdentityService identityService = processEngine.getIdentityService();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String username = "DaveWersh";&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; User user = identityService.newUser(username);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; user.setPassword("123");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; user.setFirstName("Manually");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; user.setLastName("created");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identityService.saveUser(user);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // just in case check "admin" group existance&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (identityService.createGroupQuery().groupId("admin").list().size() &amp;gt; 0) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOGGER.log(Level.INFO, "&amp;nbsp;&amp;nbsp; &amp;gt;&amp;gt;&amp;gt; admin group found");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identityService.createMembership(username, "admin");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOGGER.log(Level.INFO, "&amp;nbsp;&amp;nbsp; &amp;gt;&amp;gt;&amp;gt; membership created");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOGGER.log(Level.INFO, "&amp;nbsp;&amp;nbsp; &amp;gt;&amp;gt;&amp;gt; No admin group found");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt; }&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;SPAN&gt;The process definition looks like this (simply calls the above execute in server task):&lt;/SPAN&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;BR /&gt;&amp;lt;definitions xmlns="&lt;A href="http://www.omg.org/spec/BPMN/20100524/MODEL" rel="nofollow noopener noreferrer"&gt;http://www.omg.org/spec/BPMN/20100524/MODEL&lt;/A&gt;" xmlns:xsi="&lt;A href="http://www.w3.org/2001/XMLSchema-instance" rel="nofollow noopener noreferrer"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/A&gt;" xmlns:activiti="&lt;A href="http://activiti.org/bpmn" rel="nofollow noopener noreferrer"&gt;http://activiti.org/bpmn&lt;/A&gt;" xmlns:bpmndi="&lt;A href="http://www.omg.org/spec/BPMN/20100524/DI" rel="nofollow noopener noreferrer"&gt;http://www.omg.org/spec/BPMN/20100524/DI&lt;/A&gt;" xmlns:smileysurprised:mgdc="&lt;A href="http://www.omg.org/spec/DD/20100524/DC" rel="nofollow noopener noreferrer"&gt;http://www.omg.org/spec/DD/20100524/DC&lt;/A&gt;" xmlns:smileysurprised:mgdi="&lt;A href="http://www.omg.org/spec/DD/20100524/DI" rel="nofollow noopener noreferrer"&gt;http://www.omg.org/spec/DD/20100524/DI&lt;/A&gt;" typeLanguage="&lt;A href="http://www.w3.org/2001/XMLSchema" rel="nofollow noopener noreferrer"&gt;http://www.w3.org/2001/XMLSchema&lt;/A&gt;" expressionLanguage="&lt;A href="http://www.w3.org/1999/XPath" rel="nofollow noopener noreferrer"&gt;http://www.w3.org/1999/XPath&lt;/A&gt;" targetNamespace="&lt;A href="http://www.activiti.org/test" rel="nofollow noopener noreferrer"&gt;http://www.activiti.org/test&lt;/A&gt;"&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;process id="CreateUserDaveWershAndMembership" name="Create User Dave Wersh And Membership"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;startEvent id="startevent1" name="Start"&amp;gt;&amp;lt;/startEvent&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endEvent id="endevent1" name="End"&amp;gt;&amp;lt;/endEvent&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceTask id="servicetask1" name="Create User Dave Wersh And Membership" activiti:class="com.trials.CreateUserDaveWershAndMembership"&amp;gt;&amp;lt;/serviceTask&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;sequenceFlow id="flow1" name="" sourceRef="startevent1" targetRef="servicetask1"&amp;gt;&amp;lt;/sequenceFlow&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;sequenceFlow id="flow2" name="" sourceRef="servicetask1" targetRef="endevent1"&amp;gt;&amp;lt;/sequenceFlow&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;/process&amp;gt;&lt;BR /&gt;&amp;lt;/definitions&amp;gt;&lt;BR /&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;SPAN&gt;If I split it into two separate processes (with two dedicated delegates): one for user creation, second for membership creation - it goes well..&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Also - the above was OK with 5.10..&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Dec 2012 16:06:11 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/user-membership-creation-programmatically-fails-in-5-11/m-p/119277#M84092</guid>
      <dc:creator>oops</dc:creator>
      <dc:date>2012-12-24T16:06:11Z</dc:date>
    </item>
    <item>
      <title>Re: User/membership creation programmatically fails in 5.11</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/user-membership-creation-programmatically-fails-in-5-11/m-p/119278#M84093</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I looked into your issue and found that ,indeed, you found a bug. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In Activiti 5.11 we fixed the transactions when calling service tasks inside a JavaDelegate. But the issue here is actually not transaction related, it just made another bug visible which was always there but never visible. More specifically, in Activiti, every insert in the database is kept in memory and only flushed at the end of the service invocation (for performance). This is good for users and groups, but apparantly it was not the case for memberships. Membership creation would hit the database immediately, but the user and group wasn't yet flushed to the database. Hence the error. In Activiti 5.10 the transaction would have been flushed already and the data would already be in the database&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Also - the above was OK with 5.10..&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;It worked, yes, but it was not correct: there were actually 4 transactions going on: one for the process, one for the user creation, one for the membership and one for the group. In Activiti 5.11 there is now a single transaction. I pushed a fix for the bug on the master branch: &lt;/SPAN&gt;&lt;A href="https://github.com/Activiti/Activiti/commit/87e6d82f37a1a94ab9cd193a43cdee590721c46e" rel="nofollow noopener noreferrer"&gt;https://github.com/Activiti/Activiti/commit/87e6d82f37a1a94ab9cd193a43cdee590721c46e&lt;/A&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 26 Dec 2012 14:50:02 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/user-membership-creation-programmatically-fails-in-5-11/m-p/119278#M84093</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2012-12-26T14:50:02Z</dc:date>
    </item>
  </channel>
</rss>

