Hi Amila,

I have said what will work for the platform. AF as a solution should
implement what is given out of the platform. It is a matter of writing the
reverse of the Tenant creation BPEL. AF is not a standalone product but
meant to be deployed in a distributed manner. One cannot think of AF in
un-distributed manner.

You have given a nice summery of everything.

thanks,
dimuthu



On Mon, Aug 25, 2014 at 10:34 PM, Dimuthu Leelarathne <[email protected]>
wrote:

>
>
>
> 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
>



-- 
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