Login
Register

Home

Trainings

Fusion Blog

EBS Blog

Authors

CONTACT US

Miscellaneous
  • Register

Oracle Gold Partners, our very popular training packages, training schedule is listed here
Designed by Five Star Rated Oracle Press Authors & Oracle ACE's.

webinar new

Search Courses

I hope you have already read article Basics of Multi Org in R12 . A few questions come to mind when we think about Multi Org in R12. The best way to analyse those questions is by opening package MO_GLOBAL. Don't worry if you are not yet on R12, package MO_GLOBAL is installed 11.5.10 too.Lets get digging.


How is CLIENT_INFO being replaced in R12?
Lets take an example.
In pre Release 12, you would have had following methodology for PO_HEADERS_ALL
a. A table is created in PO Schema, named PO_HEADERS_ALL
b. A synonym named PO_HEADERS_ALL is created in APPS schema, referring to PO.PO_HEADERS_ALL
c. Create a view PO_HEADERS in APPS schema, as "select * from po_headers_all where org_id=client_info"

But now in R12, following will happen
a. A table is created in PO Schema, named PO_HEADERS_ALL
b. A synonym named PO_HEADERS_ALL is created in APPS schema, referring to PO.PO_HEADERS_ALL
c. Another synonym named PO_HEADERS is created in APPS, referring to PO_HEADERS_ALL
d. A Row Level security is applied to PO_HEADERS, using package function MO_GLOBAL.ORG_SECURITY.
This can be double-checked by running SQL select * from all_policies where object_name='PO_HEADERS'
e. The effect of this policy is that,whenever you access PO_HEADERS, Oracle RLS will dynamically append WHERE CLAUSE similar to below
SELECT * FROM PO_HEADERS WHERE EXISTS (SELECT 1 FROM mo_glob_org_access_tmp oa WHERE oa.organization_id = org_id)
Also see **** below, latter



Does this mean, if I create a new custom table, I will have to apply RLS [ Row Level Security ] against Custom table too?

Yes indeed, if it contains data partitioned by ORG_ID. All you need to do in such case is to assign package function MO_GLOBAL.ORG_SECURITY to that table/synonym/view.



Will the Multi Org Row Level security be applied against the table or the synonym or the view?

In theory, RLS can be applied against any of the above objects. However in practice, you will apply RLS against Objects in APPS Schema. This means, you will most probably apply RLS on Synonyms. Basically, the Multi Org Views are now replaced by RLS Secured Synonyms. Hence no code change is required where the pre-R12 Multi-Org secured view was being accessed. The responsibility of securing data as per ORG_ID now lies with RLS [also known as VPD - Virtual Private Database].


I have made changes to my Multi Org Security Profile, by attaching a new Org Hierarchy. Do i need to run any process?

Just like we do in HRMS, it is advised that any changes to Security Profiles must be followed by running "Security List Maintenance"



What is MO_GLOBAL.INIT
Purpose of mo_global.init :-
It will check if new Multi Org Security Profile is set, to decide if new Security Profile method will be used.
If the new MO security profile is set, then mo_global.init inserts one record, for each Organization in Org Hierarchy, in table mo_glob_org_access_tmp

When & from where is mo_global.init called ?
This package procedure will be called as soon as you login or as soon as you switch responsibility. Just like FND_GLOBAL.INITIALIZE is called. It is safe to assume that Oracle will invoke MO_GLOBAL.INIT after FND_GLOBAL.INITIALIZE


Is mo_glob_org_access_tmp table a global temporary table?
Yes, it is. Hence after Multi Org is initialised for your session, your session will have X number of records in table mo_glob_org_access_tmp. X is the number of organizations assigned to MO Security profile [view org hierarchy or org list in security profile]



What is the purpose of MO_GLOBAL.ORG_SECURITY?
The purpose of Row-Level-Security is to hide certain data[based on some conditions]. RLS does so by appending a where clause to the secured object.
1. MO_GLOBAL.ORG_SECURITY is a function that returns a predicate for the WHERE CLAUSE
2. The where clause will be appended to Table/Synonym/View for which Multi Org Row Level security is enabled


What is the purpose of MO_GLOBAL.SET_POLICY_CONTEXT ?
This procedure has two parameters
p_access_mode
Pass a value "S" in case you want your current session to work against Single ORG_ID
Pass a value of "M" in case you want your current session to work against multiple ORG_ID's
p_org_id
Only applicable if p_access_mode is passed value of "S"


In SQL*Plus, I wish to set my session to work against a specific Org [one single org]. How do I do that in R12
SQL>> exec MO_GLOBAL.SET_POLICY_CONTEXT('S',101);
In the above case, ORG_ID 101 will be assigned as current org for your session.
Internally, following code in blue will be executed by Oracle when you set your context to single Org, dbms_session.set_context('multi_org2', 'current_org_id', 101);


**** If the current database session is initialised for Single Org[as in above step], then Where clause appended to object by Row-Level-Security will be
WHERE org_id = sys_context('multi_org2','current_org_id')


Why will I as a Apps Techie ever use MO_GLOBAL.SET_POLICY_CONTEXT ?
Lets say you wish to call an API to create invoices in ORG_ID 101. In case the API does not have a parameter for Org_id, you can do the below
a. exec MO_GLOBAL.SET_POLICY_CONTEXT('S',101)
b. Call the Invoice API, which will internally read the ORG_ID from MO Current Context.



From SQL*Plus, I wish to simulate login to a specific responsibility. How do I do this?
a. Call FND_GLOBAL.INITIALIZE
This will set your responsibility id, user_id etc
b. call MO_GLOBAL.INIT
This will read the MO profile option values for your responsibility/user, and will initialize the Multi Org Access.



Anil Passi

Comments   

0 #1 Aparna 2007-02-12 00:00
Excellent articles, Anil! I recently came to know about this site and have been trying to catch up on stuff provided here.

Keep up the good work.

Thanks a lot!
Quote
0 #2 gayathri 2007-02-20 00:00
Hi Anil

SO nicely explained..

Kudos to your knowledge sharing attitude and dedication to teach others what you know!

Regard s
Gayathri
Quote
0 #3 Harish Bhatia 2007-08-22 05:40
Hi Anil,

Brillian t !! There is load of knowledge here and it pays to learn from the learned !

Keep up the good work. I need some advise from you, can you please have your personal email address?

Thank s & Regards
Harish
Quote
0 #4 Anil Passi 2007-08-22 06:50
Hi Harish

I can't leave my email address here, as spammers may pick it up.

However, I have sent you an email from my personal address.

Thank s,
Anil Passi
Quote
0 #5 Arshad Tauqir 2007-09-14 20:28
Excellent articles on your site Anil!!!

Keep the good work going.

Thanks
Arshad
Quote
0 #6 Namiita 2007-09-26 16:02
I have a doubt here regarding RLS. Whenever we query in toad or SQL Plus a view we use:
DBMS_APPLI CATION_INFO.set _client_info to query views.
Will this remain same even in R12 with RLS in place? As its mentioned that FMD_Initialize will be also called.
Quote
0 #7 Ankur Sarbhai 2007-11-28 09:27
Anil ,
Superb site . I am always waiting for new toipics from you .
Firstly can you send me a mail from your mail id ?
secondily , i have a scenario where we have done some customizations in 11i custom.pll . How to carry them forward in r12 self service pages . What is the way ahead ?
regards
Ankur
Quote
0 #8 Anil Passi 2007-11-28 12:15
I am afraid, changes from CUSTOM.pll or Forms Personalization s will have to be re-implemented on OA Framework.

Tha nks
Anil Passi
Quote
0 #9 Ravi Nuka 2007-12-22 11:58
Hi Anil,
How can I incorporate the RLS feature to my custom tables which are created in custom schema and have synonyms in apps schema
Quote
0 #10 sanjeeva 2008-03-19 14:29
Really good articals Anil! Thanks alot for ur patience.
Regar ds
Sanjeeva
Quote
0 #11 USANA DW 2008-04-29 00:03
Hi Anil,

We are developing the reports in Oracle BI Discoverer 10G on Release12. In Release12 Multi Org Views are now replaced by RLS Secured Synonyms.

My client wants implement the security for reports at org level. Here in R12 all the Multi-Org views are replced with RLS synonyms and we can access the multiple organizations data in single responsibility.

I tried like i have created one custom folder with synonym(select * from apps.ap_invoice s) and i have login with xxx responsibility which attached "MO: security profile" with two organizations.

If i develop the work sheet with this folder , i can able to see only one org data that is assigned by the "MO: Operating Unit".

Please suggest me how to implement the multi-Org Access Control in release12 for discoverer reports.

Thank s & Regards
Ramakri shna Gottipati
Quote
0 #12 lakshmikantu 2009-02-11 09:37
Thanks in advance .Your Website is Very useful to learn APPS
Quote
0 #13 DJ 2009-02-24 08:50
Hi,

I enjoyed your post. I would like to get your opinion on the xla_security_pk g.set_security_ context procedure.

The only difference between this procedure and the mo_global.init (that I can make out) is that xla_security_pk g.set_security_ context sets the DBMS_SESSION security group to XLA. Do you know why this is the case and why XLA can't use a normal mo_global.init?

Regards
Quote
0 #14 Sahabdeen 2009-04-24 11:18
Hai

How to i use RLS Securety Table in Discoverer Report. Now we are Migraring From 11i to 12i now Some View are not showing the Vl
Value in the Discovere Report

Thank you
Quote
0 #15 sdv 2009-05-31 23:51
Excellent article .. you really have art of writing and explaining things to other. Really appreciate the time you spend to teach others. Thanks a lot. God bless you.
Quote
0 #16 artur 2009-10-08 09:18
Anil , You know I am one of your oldest fan.
I found this article by Google search and only after reading review figure out it is yours again !!!!
Thank you so much from all EBS community for keeping your blog up to date and providing us with valuable informnation .
Best Regards Artur
Quote
0 #17 sergey 2010-02-01 09:17
Thanks for sharing this to us.
Quote
0 #18 DevendraG 2011-04-20 08:01
Below link will put some more light on MOAC...

functionalguy.blogspot.com/2010/04/multi-org-access-control-understanding.html

Thanks
Devendra
Quote
0 #19 sbo 2014-11-17 06:00
Great your review. When i view your article and view your site have good.
Quote
0 #20 sbobet 2014-12-22 03:25
Great your review. When i view your article and view your site have good.
Quote
0 #21 Satya 2015-06-24 08:05
Hi Anil,
Thanks a lot for the article.We have a requirement for a client where they have implemented R12 but have not used MOAC so far. They now want to implement an additional set of modules and also turn on the MOAC feature.
Can you please tell me what impact it will have on the existing code. We have custom concurrent programs with PL/SQL executables, OAF pages and workflows that are already developed.
Also, for new code that we will write after the enablement of the MOAC feature, I am assuming that using views such as po_headers instead of tables like po_headers_all and setting the org_id using exec MO_GLOBAL.SET_P OLICY_CONTEXT(' S',101) where the api does not have an org_id parameter should suffice for all objects (Reports, Concurrent programs with PL/SQL executables, Workflows, OAF objects etc..). Please confirm my understanding.
Quote
0 #22 sbobet 2021-06-03 04:13
I like it when individuals get together and share opinions.
Great website, stick with it!
Quote
0 #23 sbobet888 2021-06-12 09:30
Incredible points. Sound arguments. Keep up the great work.
Quote
0 #24 sbobet 2021-06-16 05:48
What's up, this weekend is nice for me, as this occasion i am reading this
fantastic informative article here at my house.
Quote
0 #25 sbobet888 2021-06-29 10:22
If you wish for to increase your familiarity only keep visiting this website and be updated with
the most recent news posted here.
Quote
0 #26 sbobet 888 2021-08-14 04:40
Its like you read my thoughts! You appear to understand a lot
about this, like you wrote the ebook in it or
something. I believe that you just could do with a few p.c.
to drive the message house a little bit, however instead of that,
this is wonderful blog. A fantastic read. I will definitely be back.
Quote
0 #27 sbobet 2022-02-04 22:00
Superb site you have here but I was curious about if
you knew of any message boards that cover the same topics
talked about in this article? I'd really like to be a part of online community where I can get suggestions from other knowledgeable individuals that
share the same interest. If you have any recommendations , please let me know.
Appreciate it!

Also visit my blog post: sbobet: https://thaibettrick.blogspot.com/2018/07/blog-post.html
Quote
0 #28 sbobet 2022-02-04 22:01
Great post. I will be going through a few of these issues as well..


my site - sbobet: https://sites.google.com/view/sbobetclub168/
Quote
0 #29 เว็บพนันออนไลน์ 2022-02-12 10:58
Hello there, just became alert to your blog
through Google, and found that it's really informative.
I am gonna watch out for brussels. I will be grateful if you continue this in future.
Lots of people will be benefited from your writing.
Cheers!

Also visit my blog post; เว็บพนันออนไลน์ : http://maps.google.com.gi/url?q=https://gobetting.co/
Quote
0 #30 เว็บพนันออนไลน์ 2022-02-12 11:01
Hey there just wanted to give you a quick heads up.
The words in your article seem to be running off the screen in Opera.
I'm not sure if this is a formatting issue or
something to do with web browser compatibility but I figured I'd post to let you know.
The style and design look great though! Hope you
get the issue fixed soon. Many thanks

Feel free to surf to my web blog - เว็บพนันออนไลน์ : http://maps.google.pn/url?q=https://168thaibet.com/
Quote
0 #31 เว็บพนันออนไลน์ 2022-02-13 11:24
My developer is trying to convince me to move to .net from PHP.
I have always disliked the idea because of the expenses.
But he's tryiong none the less. I've been using WordPress on a number of websites for about a year and am worried
about switching to another platform. I have heard very good things about blogengine.net.

Is there a way I can import all my wordpress posts into it?

Any kind of help would be greatly appreciated!

My web site: เว็บพนันออนไลน์ : https://www.google.sr/url?q=https://road2bet.com/
Quote
0 #32 เว็บพนันออนไลน์ 2022-02-13 11:24
I know this if off topic but I'm looking into starting my own weblog and
was curious what all is needed to get set up?

I'm assuming having a blog like yours would cost a pretty penny?
I'm not very internet savvy so I'm not 100% sure. Any tips or advice
would be greatly appreciated. Cheers

Here is my blog post ... เว็บพนันออนไลน์ : https://www.google.td/url?q=https://168thaibet.com/
Quote
0 #33 เว็บพนันออนไลน์ 2022-02-13 11:25
Hey there! I know this is somewhat off topic but I was wondering which blog platform are you using for this website?

I'm getting fed up of Wordpress because I've had problems with hackers and I'm looking at alternatives for another platform.
I would be fantastic if you could point me in the
direction of a good platform.

Also visit my web-site - เว็บพนันออนไลน์ : http://maps.google.com.ng/url?q=https://168thaibet.com/
Quote
0 #34 sbo bet 2022-03-25 15:36
Fantastic goods from you, man. I have understand your stuff previous to and you are just too excellent.
I really like what you have acquired here, really like what you're
saying and the way in which you say it. You make it enjoyable and you still take
care of to keep it smart. I can't wait to read far more from you.
This is actually a terrific website.
Quote
0 #35 sbobet 2022-03-25 15:56
Greate post. Keep posting such kind of information on your site.
Im really impressed by it.
Hey there, You have performed a great job. I will definitely digg
it and in my view recommend to my friends. I am sure they'll be benefited from this
website.
Quote
0 #36 sbobet88 2022-03-25 16:00
whoah this weblog is wonderful i really like reading your
articles. Stay up the good work! You already know, lots of individuals
are looking round for this info, you could help them greatly.
Quote
0 #37 sbobet 2022-03-25 18:27
of course like your website however you have
to test the spelling on quite a few of your posts.
A number of them are rife with spelling issues and I to find it very troublesome to
tell the truth then again I will definitely come back again.
Quote
0 #38 sbobet 2022-03-26 01:55
It's nearly impossible to find educated people about this subject, however, you
sound like you know what you're talking about! Thanks
Quote
0 #39 sbo bet 2022-03-26 08:30
This article presents clear idea for the new visitors of blogging,
that truly how to do blogging and site-building.
Quote
0 #40 sbobet.com 2022-03-26 09:18
Wow, incredible blog layout! How long have you been blogging for?
you made running a blog look easy. The whole glance of your web
site is wonderful, as smartly as the content!
Quote
0 #41 sbobet 2022-03-26 13:41
I know this web page provides quality depending posts
and additional data, is there any other web page which presents these kinds of things in quality?
Quote
0 #42 sbo bet 2022-03-26 18:28
First of all I would like to say superb blog! I had a quick
question in which I'd like to ask if you don't mind.
I was interested to know how you center yourself and clear your mind prior to writing.

I have had difficulty clearing my mind in getting my
ideas out there. I truly do take pleasure in writing but it
just seems like the first 10 to 15 minutes tend to be
lost just trying to figure out how to begin. Any recommendations
or hints? Kudos!
Quote
0 #43 sbobet.com 2022-03-28 16:41
Hi, this weekend is pleasant in favor of me, because
this moment i am reading this impressive educational paragraph here at my home.
Quote
0 #44 sbobet88 2022-03-28 20:32
Hmm is anyone else experiencing problems with the images
on this blog loading? I'm trying to determine if its
a problem on my end or if it's the blog. Any suggestions would be greatly appreciated.
Quote
0 #45 sbobet.com 2022-03-29 05:58
Hello there! This article couldn't be written any better!
Looking through this article reminds me of my previous roommate!
He always kept talking about this. I most certainly
will send this article to him. Fairly certain he'll have a good read.
I appreciate you for sharing!
Quote
0 #46 sbo bet 2022-04-01 03:25
This post is really a good one it helps new the web users, who are wishing for blogging.
Quote
0 #47 www.sbobet.com 2022-04-01 10:41
WOW just what I was searching for. Came here by searching for MO_GLOBAL
Quote
0 #48 www sbobet 2022-04-12 11:27
I constantly spent my half an hour to read this blog's
articles everyday along with a mug of coffee.
Quote
0 #49 Sbo Bet 2022-04-12 11:44
Today, I went to the beach with my children. I found a sea shell and gave it to my 4 year old daughter and said "You can hear the ocean if you put this to your ear."
She placed the shell to her ear and screamed.

There was a hermit crab inside and it pinched her ear.

She never wants to go back! LoL I know this is completely off topic but I had to tell someone!
Quote
0 #50 download sbobet88 2022-04-14 06:47
This is a topic that's close to my heart... Cheers!
Exactly where are your contact details though?
Quote
0 #51 download sbobet88 2022-04-14 13:33
I simply couldn't depart your web site prior to suggesting
that I really loved the usual info an individual supply for your visitors?
Is gonna be again incessantly in order to check out
new posts
Quote
0 #52 sbobet 88 2022-04-15 01:12
I am extremely inspired with your writing talents as neatly as with the format in your weblog.
Is that this a paid theme or did you modify it your self?
Either way keep up the nice high quality writing, it's uncommon to see
a nice weblog like this one today..
Quote
0 #53 apk sbobet88 2022-04-15 01:33
If some one wishes expert view concerning
blogging then i propose him/her to pay a visit this website, Keep up the
fastidious work.
Quote
0 #54 download sbobet88 2022-04-15 23:15
What's up Dear, are you truly visiting this
site daily, if so after that you will without doubt get nice know-how.
Quote
0 #55 sbobet 2022-04-17 06:33
Heya! I'm at work surfing around your blog from my new apple iphone!
Just wanted to say I love reading your blog and look forward to
all your posts! Keep up the outstanding work!
Quote
0 #56 sbobet88 mobile 2022-04-19 20:04
I have been surfing online more than 4 hours today, yet I never found any
interesting article like yours. It is pretty worth enough for me.
In my opinion, if all web owners and bloggers made good
content as you did, the internet will be much more useful than ever
before.
Quote
0 #57 sbo bet 2022-04-22 20:51
My programmer is trying to persuade me to move to .net from PHP.
I have always disliked the idea because of the costs. But he's tryiong none the less.
I've been using WordPress on various websites for about a
year and am anxious about switching to another platform.
I have heard good things about blogengine.net. Is there a way I can transfer
all my wordpress content into it? Any help would be greatly appreciated!
Quote
0 #58 deposit sbobet88 2022-04-23 16:20
I have read some just right stuff here. Definitely price bookmarking for revisiting.
I surprise how much effort you set to make one of these wonderful informative
web site.
Quote
0 #59 www.sbobet88.com 2022-04-24 15:49
What's up, yeah this paragraph is actually good and I have learned lot of things from it on the topic of blogging.
thanks.
Quote
0 #60 agen sbobet88 2022-04-25 05:57
In fact when someone doesn't know afterward its up to other viewers that they will assist,
so here it takes place.
Quote
0 #61 sbobet download 2022-04-28 17:36
Hi there, every time i used to check weblog posts here early in the dawn, as i love to find out more and more.
Quote
0 #62 sbobet88 2022-04-29 00:35
Fantastic goods from you, man. I've keep in mind your stuff prior to and you are simply too fantastic.
I really like what you have got here, really like what you are stating and the best
way through which you assert it. You're making it enjoyable and you continue to
care for to keep it sensible. I can't wait to read much
more from you. This is really a terrific web site.
Quote
0 #63 sbobet 2022-05-09 05:07
What's up everybody, here every person is sharing these kinds of know-how, so it's pleasant to read this website, and I
used to pay a visit this webpage everyday.
Quote
0 #64 sbo bet 2022-05-09 16:43
You've made some really good points there.

I looked on the web to learn more about the issue and found most people will go
along with your views on this site.
Quote
0 #65 apk sbobet88 2022-05-09 23:09
I'm not sure why but this site is loading incredibly slow for me.
Is anyone else having this issue or is it a issue on my end?
I'll check back later on and see if the problem still
exists.
Quote
0 #66 sbobet88 2022-05-15 00:17
Wow! In the end I got a web site from where I be capable of genuinely take valuable data concerning my study and knowledge.
Quote
0 #67 xt_blog 2022-05-16 02:18
Hi, Neat post. There is a problem together with your web site in web
explorer, would check this? IE still is
the market chief and a good portion of other folks will leave out your wonderful writing due to this
problem.
Quote
0 #68 m.sbobet.com 2022-05-16 04:43
I read this paragraph completely on the topic of the comparison of hottest and preceding technologies,
it's amazing article.
Quote
0 #69 apk sbobet88 2022-05-16 10:42
Thank you for the good writeup. It in fact was a amusement account it.
Look advanced to more added agreeable from you!
However, how can we communicate?
Quote
0 #70 download sbobet88 2022-05-19 03:02
Hello there, I believe your web site might be having browser compatibility issues.
Whenever I take a look at your blog in Safari, it looks fine however, if opening in IE, it has some overlapping issues.
I just wanted to provide you with a quick heads up!
Besides that, excellent site!
Quote
0 #71 sbobet 88 2022-05-20 03:43
Right away I am going away to do my breakfast, once having my breakfast coming yet again to
read more news.
Quote
0 #72 Sbobet 2022-05-26 06:06
Incredible quest there. What happened after? Take care!
Quote
0 #73 sbobet 88 2022-05-28 08:24
Thank you for the auspicious writeup. It in fact was a amusement account it.

Look advanced to more added agreeable from you! However, how can we
communicate?
Quote
0 #74 sbobet 2022-05-28 23:45
Good answer back in return of this matter with solid arguments and telling everything concerning
that.
Quote
0 #75 sbobet.com 2022-05-29 03:09
Hey superb blog! Does running a blog such as this take
a great deal of work? I have no knowledge of coding however
I had been hoping to start my own blog in the near future.
Anyways, if you have any ideas or techniques
for new blog owners please share. I know this
is off subject however I just had to ask. Thank you!
Quote
0 #76 sbo bet 2022-05-29 05:02
Just wish to say your article is as surprising.
The clearness in your post is simply great and i can assume you're an expert on this subject.
Well with your permission allow me to grab your RSS feed to keep up
to date with forthcoming post. Thanks a million and please keep up the enjoyable work.
Quote
0 #77 poradnikfaceta.com 2022-05-29 14:42
https://poradnikfaceta.com
continuously i used to read smaller articles or reviews which also clear their motive, and that is also happening with this post which I am reading here.
Quote
0 #78 sbo bet 2022-06-07 11:21
Do you have a spam problem on this website; I also am a blogger, and I was curious about your situation; many of us
have developed some nice practices and we are looking
to exchange solutions with others, why not shoot me an e-mail if interested.
Quote
0 #79 sbobet.com 2022-08-01 08:25
Aw, this was a really nice post. Spending some time and actual effort to generate a very good article… but what can I say… I procrastinate a whole lot
and don't seem to get anything done.
Quote

Add comment


Security code
Refresh

Search Trainings

Fully verifiable testimonials

Apps2Fusion - Event List

<<  Apr 2024  >>
 Mon  Tue  Wed  Thu  Fri  Sat  Sun 
  1  2  3  4  5  6  7
  8  91011121314
15161718192021
22232425262728
2930     

Enquire For Training

Fusion Training Packages

Get Email Updates


Powered by Google FeedBurner