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
