On Monday, August 25, 2014, Dimuthu Leelarathne <dimut...@wso2.com> 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.

>
> thanks,
> dimuthu
>
>
>
> On Mon, Aug 25, 2014 at 9:20 PM, Amila Maha Arachchi <ami...@wso2.com
> <javascript:_e(%7B%7D,'cvml','ami...@wso2.com');>> wrote:
>
>>
>>
>> On Monday, August 25, 2014, Dimuthu Leelarathne <dimut...@wso2.com
>> <javascript:_e(%7B%7D,'cvml','dimut...@wso2.com');>> 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 <ami...@wso2.com>
>>> 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 <ami...@wso2.com>
>>>> wrote:
>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Sat, Aug 23, 2014 at 3:12 AM, Dimuthu Leelarathne <
>>>>> dimut...@wso2.com> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Fri, Aug 22, 2014 at 10:01 PM, Godwin Amila Shrimal <
>>>>>> god...@wso2.com> 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 <
>>>>>>> ami...@wso2.com> 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 <mahe...@wso2.com
>>>>>>>> > 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 <
>>>>>>>>> danush...@wso2.com> 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 <
>>>>>>>>>> dimut...@wso2.com> 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 <
>>>>>>>>>>> ajant...@wso2.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Fri, Aug 22, 2014 at 5:48 AM, Danushka Fernando <
>>>>>>>>>>>> danush...@wso2.com> 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 <
>>>>>>>>>>>>> ajant...@wso2.com> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Thu, Aug 21, 2014 at 8:24 PM, Mahesh Chinthaka <
>>>>>>>>>>>>>> mahe...@wso2.com> 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 : mahe...@wso2.com
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>>>>>> Architecture@wso2.org
>>>>>>>>>>>>>>> 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
>>>>>>>>>>>>>> Architecture@wso2.org
>>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>>>> Architecture@wso2.org
>>>>>>>>>>>>> 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
>>>>>>>>>>>> Architecture@wso2.org
>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Dimuthu Leelarathne
>>>>>>>>>>> Architect & Product Lead of App Factory
>>>>>>>>>>>
>>>>>>>>>>> WSO2, Inc. (http://wso2.com)
>>>>>>>>>>> email: dimut...@wso2.com
>>>>>>>>>>> Mobile : 0773661935
>>>>>>>>>>>
>>>>>>>>>>> Lean . Enterprise . Middleware
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>> Architecture@wso2.org
>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Architecture mailing list
>>>>>>>>>> Architecture@wso2.org
>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Mahesh Chinthaka
>>>>>>>>> Software Engineer , WSO2.
>>>>>>>>>
>>>>>>>>> Phone : (+94) 71 63 63 083
>>>>>>>>> Email : mahe...@wso2.com
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Architecture mailing list
>>>>>>>>> Architecture@wso2.org
>>>>>>>>> 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
>>>>>>>> Architecture@wso2.org
>>>>>>>> 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: dimut...@wso2.com
>>>>>> 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: dimut...@wso2.com
>>> 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: dimut...@wso2.com
> <javascript:_e(%7B%7D,'cvml','dimut...@wso2.com');>
> Mobile : 0773661935
>
> Lean . Enterprise . Middleware
>


-- 
*Amila Maharachchi*
Senior Technical Lead
WSO2, Inc.; http://wso2.com

Blog: http://maharachchi.blogspot.com
Mobile: +94719371446
_______________________________________________
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to