On Mon, Aug 25, 2014 at 10:31 PM, Amila Maha Arachchi <[email protected]>
wrote:

>
>
> On Monday, August 25, 2014, Dimuthu Leelarathne <[email protected]> wrote:
>
>> Hi Amila,
>>
>> It is not a standalone product. Please read my mail carefully, it says
>> what each product should do. In the offline chat I even said what should
>> AFTenantMgtListner should contain.
>>
>
> Right. What you have said works for AF. We, as the cloud, have more
> concerns. What I have summarized is what is going to be implemented and
> works for the entire cloud.
>

Yes it is a summery.

thanks,
dimuthu


>
>> thanks,
>> dimuthu
>>
>>
>>
>> On Mon, Aug 25, 2014 at 9:20 PM, Amila Maha Arachchi <[email protected]>
>> wrote:
>>
>>>
>>>
>>> On Monday, August 25, 2014, Dimuthu Leelarathne <[email protected]>
>>> wrote:
>>>
>>>> Hi Amila,
>>>>
>>>> You are only repeating what I have said in my previous mail.
>>>>
>>>
>>> Well... That only contained a solution for a standalone product. To make
>>> this working for both standalone product and a distributed deployment we
>>> had to discuss for two hours and the missing pieces in your mail can be
>>> found in my one.
>>>
>>> Intention of my mail was to provide the final summary for others
>>> information.
>>>
>>>>
>>>> thanks,
>>>> dimuthu
>>>>
>>>>
>>>> On Mon, Aug 25, 2014 at 7:22 PM, Amila Maha Arachchi <[email protected]>
>>>> wrote:
>>>>
>>>>> Following is the finally agreed approach.
>>>>>
>>>>> 1. TenantMgtListener will have a preDelete() method.
>>>>> 2. deleteTenant() of TenantMgtAdminService will notify the listeners
>>>>> at the beginning.
>>>>> 3. We need to set a flag whether to completely remove the tenant or
>>>>> not (i.e. delete from registry and LDAP). If this flag is set to true,
>>>>> deleteTenant() remove the tenant completely. If not, it will just invoke
>>>>> the listeners and return.
>>>>>
>>>>> With 1,2,3, any standalone product will be able to support tenant
>>>>> deletion properly and it will be product teams' responsibility to cleanup
>>>>> everything properly by implementing the preDelete() method.
>>>>>
>>>>> But, for a distributed deployment such as WSO2 Cloud, we need to
>>>>> coordinate with multiple clouds and, iff all the clouds has done the
>>>>> cleanup only, we can delete the tenant permanently. For this, we will be
>>>>> writing a BPEL which will invoke the deleteTenant() of the available 
>>>>> clouds
>>>>> (i.e. AF and APIM). Both above products will have the previously mentioned
>>>>> flag set to false. For the cloud deployment, we'll have a separate carbon
>>>>> server with the flag set to true and once its deleteTenant() is invoked,
>>>>> tenant will be deleted completely.
>>>>>
>>>>> Azeez, we would like to know your feedback too on this.
>>>>>
>>>>> Regards,
>>>>> Amila.
>>>>>
>>>>>
>>>>> On Sat, Aug 23, 2014 at 8:40 PM, Amila Maha Arachchi <[email protected]>
>>>>> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Sat, Aug 23, 2014 at 3:12 AM, Dimuthu Leelarathne <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Fri, Aug 22, 2014 at 10:01 PM, Godwin Amila Shrimal <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>> Hi Amila,
>>>>>>>>
>>>>>>>>
>>>>>>>> As per the discussion we had with Dimuthu and AF team. Listed below
>>>>>>>> the decision made to implement this.
>>>>>>>>
>>>>>>>>
>>>>>>>> 1. Add onDelete() and onPreDelete() methods to TenantMgtListener
>>>>>>>> interface
>>>>>>>>
>>>>>>>
>>>>>>> Add the onPreDelete() method to TenantMgtListener interface and call
>>>>>>> that method from the deleteTenant of the TenantMgtService. I don't see 
>>>>>>> the
>>>>>>> point of adding onDelete method to TenantMgtListenter interface 
>>>>>>> currently.
>>>>>>>
>>>>>>
>>>>>> I see couple of problems with this approach.
>>>>>>
>>>>>> 1. Since this involved an interface change, we are going to get
>>>>>> trouble when using this with existing products in our setup. We'll have 
>>>>>> to
>>>>>> patch their tenant.mgt code and all implementations of the listener.
>>>>>> 2. Even if we add the onPreDelete method, it will only execute the
>>>>>> implementation classes in that jvm only. So, if I call the deleteTenant
>>>>>> method in AF, it won't affect other products such as SS, Jenkins AS,
>>>>>> Stratos Manager.  This will end of tenants' bits and pieces remaining in
>>>>>> other products even after we delete the tenant.
>>>>>>
>>>>>> Do we have a solution for this?
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>> 2. Implement those methods in AppFactoryTenantMgtListener as we
>>>>>>>> discussed.
>>>>>>>>
>>>>>>>> 3. We don’t use any BPEL implementation and use the existing
>>>>>>>> listeners to implement this
>>>>>>>>
>>>>>>>> 4.  Future Cloud products can implement the onDelete() and
>>>>>>>> onPreDelete() methods in TenantMgtListener interface
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>> thanks,
>>>>>>> dimuthu
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>  Please share your feedback on this.
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>> Godwin
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Fri, Aug 22, 2014 at 6:09 PM, Amila Maha Arachchi <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> +1 for preOnDelete method. Actually there is a place which has
>>>>>>>>> this kind of an implementation. Thats the user.core. So, we can learn 
>>>>>>>>> from
>>>>>>>>> it and do this implementation.
>>>>>>>>>
>>>>>>>>> BTW,
>>>>>>>>>
>>>>>>>>> Mahesh, can you post what did you agreed online+offline?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Fri, Aug 22, 2014 at 4:51 PM, Mahesh Chinthaka <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Thanks Dimuthu, Danushka & Ajanthan  for your feedback.
>>>>>>>>>> We will do this with the approach discussed online+offline.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Fri, Aug 22, 2014 at 10:59 AM, Danushka Fernando <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi
>>>>>>>>>>> +1 for the OnPreDelete concept. But the thing is we don't have
>>>>>>>>>>> this Pre and Post events anywhere in platform. I think that's 
>>>>>>>>>>> something we
>>>>>>>>>>> should consider about. WDYT?
>>>>>>>>>>>
>>>>>>>>>>> Thanks & Regards
>>>>>>>>>>> Danushka Fernando
>>>>>>>>>>> Software Engineer
>>>>>>>>>>> WSO2 inc. http://wso2.com/
>>>>>>>>>>> Mobile : +94716332729
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Fri, Aug 22, 2014 at 9:14 AM, Dimuthu Leelarathne <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi Mahesh all,
>>>>>>>>>>>>
>>>>>>>>>>>> Lets consider Carbon Platform aspect first.
>>>>>>>>>>>>
>>>>>>>>>>>> Before we remove tenant from user core and registry, we have to
>>>>>>>>>>>> delete it from all other places. So +1 for the interface that 
>>>>>>>>>>>> would allow
>>>>>>>>>>>> different product teams to clean up their cleanup process, but 
>>>>>>>>>>>> here is what
>>>>>>>>>>>> I recommend,
>>>>>>>>>>>>
>>>>>>>>>>>> We need a method call "onPreDelete()" on TenantMgtListener.
>>>>>>>>>>>> This is to allow all product teams to implement it. So the first 
>>>>>>>>>>>> rule of
>>>>>>>>>>>> thumb is, if any product is moving to cloud they must implement 
>>>>>>>>>>>> this method
>>>>>>>>>>>> and prove that they clean up the tenant before they move to 
>>>>>>>>>>>> WSO2Cloud.
>>>>>>>>>>>>
>>>>>>>>>>>> So basically, in tenant.core what you have to do is call all
>>>>>>>>>>>> OSGi registered TenantMgtListener's onPreDelete(), and after that 
>>>>>>>>>>>> delete
>>>>>>>>>>>> from registry and finally user.core.
>>>>>>>>>>>>
>>>>>>>>>>>> That would be the most elegant and extensible fix for platform.
>>>>>>>>>>>>
>>>>>>>>>>>> Now we come to AF as a product/solution. We have to implement
>>>>>>>>>>>> onPreDelete() method. So we as a product team should decide 
>>>>>>>>>>>> whether we are
>>>>>>>>>>>> going to implement it from BPEL or not. So as a product in order 
>>>>>>>>>>>> to be
>>>>>>>>>>>> WSO2Cloud friendly we have to implement onPreDelete() method. 
>>>>>>>>>>>> >From what I
>>>>>>>>>>>> feel, I believe the way to do is code + BPEL.
>>>>>>>>>>>>
>>>>>>>>>>>> thanks,
>>>>>>>>>>>> dimuthu
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Fri, Aug 22, 2014 at 7:26 AM, Ajanthan Balachandran <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Fri, Aug 22, 2014 at 5:48 AM, Danushka Fernando <
>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi Ajanthan
>>>>>>>>>>>>>> Problem with OnDelete is it is called after tenant deleted
>>>>>>>>>>>>>> (After deleting userstore and registry). But we need to cleanup 
>>>>>>>>>>>>>> before that
>>>>>>>>>>>>>> otherwise we cannot call admin services since tenant is not 
>>>>>>>>>>>>>> there. As per I
>>>>>>>>>>>>>> mentioned in the previous thread we need to call this at a 
>>>>>>>>>>>>>> OnPreDelete.
>>>>>>>>>>>>>>
>>>>>>>>>>>>> IMO OnDelete method should be called as first step.
>>>>>>>>>>>>>
>>>>>>>>>>>>>> @Mahesh : I think you have missed delete applications step.
>>>>>>>>>>>>>> And delete applications step would Issue tracker details as well 
>>>>>>>>>>>>>> I guess. @
>>>>>>>>>>>>>> Ajanthan : Correct me if I am wrong.
>>>>>>>>>>>>>>
>>>>>>>>>>>>> Looping through each applications and deleting will not be a
>>>>>>>>>>>>> salable solution.
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thanks & Regards
>>>>>>>>>>>>>> Danushka Fernando
>>>>>>>>>>>>>> Software Engineer
>>>>>>>>>>>>>> WSO2 inc. http://wso2.com/
>>>>>>>>>>>>>> Mobile : +94716332729
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Thu, Aug 21, 2014 at 8:46 PM, Ajanthan Balachandran <
>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Thu, Aug 21, 2014 at 8:24 PM, Mahesh Chinthaka <
>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hi Everyone,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> We are working on the Training Project -[Cloud] Tenant
>>>>>>>>>>>>>>>> deletion code/script for cloud -
>>>>>>>>>>>>>>>> https://redmine.wso2.com/issues/3121. Listed below the
>>>>>>>>>>>>>>>>  workflow of the tenant deletion process in the App Cloud as 
>>>>>>>>>>>>>>>> we identified.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> 1. Undeploy Jenkins web app from application server
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> 2. Delete Git repository (use gitblit api to delete repo
>>>>>>>>>>>>>>>> in Git)
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> 3. Unsubscribe Stratos using Stratos Rest Services
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> 4. Check database created by RSSAdmin and delete them
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> 5. Perform TenantMgtAdminService deleteTenant operation
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>    -
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>    i. Delete Billing data
>>>>>>>>>>>>>>>>    ii. Delete Tenant Registration Data (Ex.
>>>>>>>>>>>>>>>>    REG_CLUSTER_LOCK, REG_LOG)
>>>>>>>>>>>>>>>>    iii. Delete Tenant User management data (Ex.
>>>>>>>>>>>>>>>>    UM_USER_PERMISSION, UM_USER)
>>>>>>>>>>>>>>>>    iv. Remove Tenant information from cache
>>>>>>>>>>>>>>>>    v. Delete UM_TENANT table
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Don't you need to cleanup issue tracker?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> As per the analysis there are two solutions we have
>>>>>>>>>>>>>>>> identified to implement this , such as BPEL and Carbon 
>>>>>>>>>>>>>>>> Component. We
>>>>>>>>>>>>>>>> thought of going for a *carbon component* implementation
>>>>>>>>>>>>>>>> rather than using a* BPEL* due to following reasons.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> 1. Plugging a Carbon Component will give more extensibility
>>>>>>>>>>>>>>>> to implement Tenant Deletion operation in future Cloud base 
>>>>>>>>>>>>>>>> products
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> 2. If we used a BPEL we will have to reconstruct at each
>>>>>>>>>>>>>>>> time when we meet a new requirement (ex: esb cloud 
>>>>>>>>>>>>>>>> integration).
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Proposed Solution
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Why can't you use existing TenantMgtListener and add
>>>>>>>>>>>>>>> onDelete method.It also has ListenerOrder and every
>>>>>>>>>>>>>>> implementation should be registered as OSGI service.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> 1. Create an abstraction for delete operation
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>  public interface TenantDeletion{
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>  public void onDeletion();
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> 2. Implement TenantDeletion for each operations
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> public class JenkinsAppUndeployer implements TenantDeletion{
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> public void onDeletion(){
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>  //Implementation of the JenkinsApp undeploy process
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> 3. Use a configuration file to maintain the execution order
>>>>>>>>>>>>>>>> which help to dynamically add new requirement
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> <ExecutionOrder>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>    <class
>>>>>>>>>>>>>>>> name=”org.wso2.cloud.tenant.JenkinsAppUndeployer”></class>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>    <class
>>>>>>>>>>>>>>>> name=”org.wso2.cloud.tenant.GitRepoRemover”></class>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>    <class name=”org.wso2.cloud.tenant.XXXXXX”></class>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> </ExecutionOrder>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> We are looking for a feedback on this to move forward with
>>>>>>>>>>>>>>>> selected design.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>> Mahesh Chinthaka
>>>>>>>>>>>>>>>> Software Engineer , WSO2.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Phone : (+94) 71 63 63 083
>>>>>>>>>>>>>>>> Email : [email protected]
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> ajanthan
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> Ajanthan Balachandiran
>>>>>>>>>>>>>>> Senior Software Engineer;
>>>>>>>>>>>>>>> Solutions Technologies Team ;WSO2, Inc.;  http://wso2.com/
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> email: ajanthan <http://goog_595075977>@wso2.com; cell:
>>>>>>>>>>>>>>> +94775581497
>>>>>>>>>>>>>>> blog: http://bkayts.blogspot.com/
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Lean . Enterprise . Middleware
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> ajanthan
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Ajanthan Balachandiran
>>>>>>>>>>>>> Senior Software Engineer;
>>>>>>>>>>>>> Solutions Technologies Team ;WSO2, Inc.;  http://wso2.com/
>>>>>>>>>>>>>
>>>>>>>>>>>>> email: ajanthan <http://goog_595075977>@wso2.com; cell:
>>>>>>>>>>>>> +94775581497
>>>>>>>>>>>>> blog: http://bkayts.blogspot.com/
>>>>>>>>>>>>>
>>>>>>>>>>>>> Lean . Enterprise . Middleware
>>>>>>>>>>>>>
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Dimuthu Leelarathne
>>>>>>>>>>>> Architect & Product Lead of App Factory
>>>>>>>>>>>>
>>>>>>>>>>>> WSO2, Inc. (http://wso2.com)
>>>>>>>>>>>> email: [email protected]
>>>>>>>>>>>> Mobile : 0773661935
>>>>>>>>>>>>
>>>>>>>>>>>> Lean . Enterprise . Middleware
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>>> [email protected]
>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>> [email protected]
>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Mahesh Chinthaka
>>>>>>>>>> Software Engineer , WSO2.
>>>>>>>>>>
>>>>>>>>>> Phone : (+94) 71 63 63 083
>>>>>>>>>> Email : [email protected]
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Architecture mailing list
>>>>>>>>>> [email protected]
>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> *Amila Maharachchi*
>>>>>>>>> Senior Technical Lead
>>>>>>>>> WSO2, Inc.; http://wso2.com
>>>>>>>>>
>>>>>>>>> Blog: http://maharachchi.blogspot.com
>>>>>>>>> Mobile: +94719371446
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Architecture mailing list
>>>>>>>>> [email protected]
>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> *Godwin Amila Shrimal*
>>>>>>>> Senior Software Engineer
>>>>>>>> WSO2 Inc.; http://wso2.com
>>>>>>>> lean.enterprise.middleware
>>>>>>>>
>>>>>>>> mobile: *+94772264165*
>>>>>>>> linkedin: *http://lnkd.in/KUum6D <http://lnkd.in/KUum6D>*
>>>>>>>> twitter: https://twitter.com/godwinamila
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Dimuthu Leelarathne
>>>>>>> Architect & Product Lead of App Factory
>>>>>>>
>>>>>>> WSO2, Inc. (http://wso2.com)
>>>>>>> email: [email protected]
>>>>>>> Mobile : 0773661935
>>>>>>>
>>>>>>> Lean . Enterprise . Middleware
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> *Amila Maharachchi*
>>>>>> Senior Technical Lead
>>>>>> WSO2, Inc.; http://wso2.com
>>>>>>
>>>>>> Blog: http://maharachchi.blogspot.com
>>>>>> Mobile: +94719371446
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Amila Maharachchi*
>>>>> Senior Technical Lead
>>>>> WSO2, Inc.; http://wso2.com
>>>>>
>>>>> Blog: http://maharachchi.blogspot.com
>>>>> Mobile: +94719371446
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Dimuthu Leelarathne
>>>> Architect & Product Lead of App Factory
>>>>
>>>> WSO2, Inc. (http://wso2.com)
>>>> email: [email protected]
>>>> Mobile : 0773661935
>>>>
>>>> Lean . Enterprise . Middleware
>>>>
>>>
>>>
>>> --
>>> *Amila Maharachchi*
>>> Senior Technical Lead
>>> WSO2, Inc.; http://wso2.com
>>>
>>> Blog: http://maharachchi.blogspot.com
>>> Mobile: +94719371446
>>>
>>>
>>>
>>
>>
>> --
>> Dimuthu Leelarathne
>> Architect & Product Lead of App Factory
>>
>> WSO2, Inc. (http://wso2.com)
>> email: [email protected]
>> Mobile : 0773661935
>>
>> Lean . Enterprise . Middleware
>>
>
>
> --
> *Amila Maharachchi*
> Senior Technical Lead
> WSO2, Inc.; http://wso2.com
>
> Blog: http://maharachchi.blogspot.com
> Mobile: +94719371446
>
>
>


-- 
Dimuthu Leelarathne
Architect & Product Lead of App Factory

WSO2, Inc. (http://wso2.com)
email: [email protected]
Mobile : 0773661935

Lean . Enterprise . Middleware
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to