Your .NET and Microsoft technologies specialist in Western Switzerland RSS 2.0
# Monday, July 11, 2005

A voir, BizTalk rencontre passablement de problèmes pour gérer les fichiers dont le volume est important. Pourtant, malgré les efforts entrepris pour ré architecturer l’application, il est parfois impossible de s’affranchir de ses OutOfMemoryException. Dans le cas du projet actuel, le problème ne se passe que lorsque BizTalk doit traiter plus d’un fichier en même temps. J’ai donc décidé, provisoirement, de ne soumettre à BizTalk qu’un seul fichier à la fois, et attendre qu’il en ait terminé le traitement avant d’en soumettre le suivant. Or, il me semble qu’il n’est pas possible d’être averti lorsqu’une orchestration se termine, dans le framework .NET.

La méthode que j’ai trouvée passe par WMI. Ainsi, pour connaître quand une orchestration se termine :

private void MountBTSOrchestrationMonitoring()
{
   // Only one watch to mount, because we can only monitor orchestration deletion
   WqlEventQuery q = new WqlEventQuery(__InstanceDeletionEvent,
                                       new TimeSpan(0,0,0,10),
                                       "TargetInstance isa \"MSBTS_ServiceInstance\"");
   m_btsWatcher = new ManagementEventWatcher(new ManagementScope(root/MicrosoftBizTalkServe),
                                             q);
   m_btsWatcher.EventArrived += new EventArrivedEventHandler(bts_OrchestrationDeleted);
   m_btsWatcher.Start();
}


private void bts_OrchestrationDeleted(object sender, EventArrivedEventArgs e)
{
   // Do something
}

Ainsi, lorsqu’une orchestration se terminera, l’événement bts_OrchestrationDeleted sera appelé. Le seul petit problème, c’est qu’il n’est pas possible de connaître quelle orchestration s’est terminée. Il faut alors interroger BizTalk, via WMI, à nouveau, pour savoir si une instance de l’orchestration observée est encore active :

private int OrchestrationInstanceCount(string strOrchestrationName)
{
   System.Text.StringBuilder sb = new System.Text.StringBuilder("SELECT * FROM MSBTS_ServiceInstance WHERE ServiceName=\"");
   sb.Append(strOrchestrationName);
   sb.Append("\"");
   WqlObjectQuery w = new WqlObjectQuery(sb.ToString());
   ManagementObjectSearcher objSearcher = new ManagementObjectSearcher(new ManagementScope(kstrWMIBTSNamespace),
                                                w);
   return objSearcher.Get().Count;
}

Si la méthode retourne 0, aucune orchestration avec le nom donné en paramètre n’est active.

Attention toute fois ! BizTalk met un certain temps avant de mettre en route une orchestration, faisant que même si un fichier est déposé dans un répertoire d’accueil de BizTalk, la méthode risque de renvoyer la valeur 0, car l’orchestration n’aura pas encore démarré. Il serait alors judicieux de voir si des fichiers sont encore présent dans le répertoire d’accueil avant d’en poster de nouveaux.

 

 

According to a lot of blogs, BizTalk has some issues with large files. However, despite of the efforts for rearchitecturing the application, it is sometimes not possible to avoid the OutOfMemoryException.

In the case of the actual project, that happens only when BizTalk has to process more than one file at a time. So, I temporary decided to pass to BizTalk only one file at a time and to wait the orchestration stops before copying the next file to the receive location. But, it seems that it is not possible to be warned when an orchestration stops with .NET.

The way I found is using WMI. To know when an orchestration stops, I install an event handler :

 

private void MountBTSOrchestrationMonitoring()
{
   // Only one watch to mount, because we can only monitor orchestration deletion
   WqlEventQuery q = new WqlEventQuery(__InstanceDeletionEvent,
                                       new TimeSpan(0,0,0,10),
                                       "TargetInstance isa \"MSBTS_ServiceInstance\"");
   m_btsWatcher = new ManagementEventWatcher(new ManagementScope(root/MicrosoftBizTalkServe),
                                             q);
   m_btsWatcher.EventArrived += new EventArrivedEventHandler(bts_OrchestrationDeleted);
   m_btsWatcher.Start();
}


private void bts_OrchestrationDeleted(object sender, EventArrivedEventArgs e)
{
   // Do something
}

When an orchestration will stop, the bts_OrchestrationDeleted event will be called. There is only one little issue. It is impossible to know which orchestration stopped. We have to get the answer from BizTalk itself, through WMI again, and getting the number of active instance with a given name :

 

private int OrchestrationInstanceCount(string strOrchestrationName)
{
   System.Text.StringBuilder sb = new System.Text.StringBuilder("SELECT * FROM MSBTS_ServiceInstance WHERE ServiceName=\"");
   sb.Append(strOrchestrationName);
   sb.Append("\"");
   WqlObjectQuery w = new WqlObjectQuery(sb.ToString());
   ManagementObjectSearcher objSearcher = new ManagementObjectSearcher(new ManagementScope(kstrWMIBTSNamespace),
                                                w);
   return objSearcher.Get().Count;
}

If the method returns 0, no orchestration with the given name is still running.

But, warning ! BizTalk needs a bit of time before starting an orchestration and event a file is dropped in a BizTalk receive location, the method will certainly return 0, because the orchestration is not yet started. It would be a good idea to test is there are files in the receive location before dropping new files.

Monday, July 11, 2005 1:34:22 PM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [0] -
BTS2004 | Programming | Technical
Related posts:
Attempt to deploy Orchard
Microsoft Announces the availability of Windows Phone 7 devices
Use of Today in calculated columns in SharePoint 2010
Random 401 Unauthorized errors on SharePoint 2007
Problem accessing the web from your guest VMWare system ?
Managed Metadata Service – Part One – Term Store Management

Tracked by:
http://9ow-information.info/87182243/index.html [Pingback]
http://9os-information.info/19290123/current-topicsin-food-service.html [Pingback]
http://9qf-information.info/61059560/index.html [Pingback]
http://9qe-information.info/76891492/nuova-legge-droghe-leggere.html [Pingback]
http://9os-information.info/35659093/historical-figure-in-mental-health-counseli... [Pingback]
http://9ol-information.info/24362531/oklahoma-city-winter-quilt-show.html [Pingback]
http://9qi-information.info/96790804/index.html [Pingback]
http://9ok-information.info/84866505/index.html [Pingback]
http://9oq-information.info/61341732/index.html [Pingback]
http://9rj-information.info/18554377/hertz-rental-car-east-bay-locations.html [Pingback]
http://9rd-information.info/14554926/index.html [Pingback]
http://9rp-information.info/93604643/index.html [Pingback]
http://9sq-information.info/69098303/index.html [Pingback]
http://9sh-information.info/32341805/index.html [Pingback]
http://9rt-information.info/50408583/florida-airfares-business-class-first-phili... [Pingback]
http://9sg-information.info/05509101/etnika-rock.html [Pingback]
http://9sg-information.info/21490469/index.html [Pingback]
http://9sa-information.info/99640221/index.html [Pingback]
http://9sk-information.info/12193980/index.html [Pingback]
http://9uaen-le-informazioni.info/80838289/hp-com-it-diagnostica.html [Pingback]
http://9uaee-le-informazioni.info/16275017/spray-cap-for-insecticide-spray-spain... [Pingback]
http://9uafr-le-informazioni.info/96431981/s-emanuele-vita.html [Pingback]
http://9uafr-le-informazioni.info/61735992/index.html [Pingback]
http://9uaef-le-informazioni.info/05586901/index.html [Pingback]
http://9uafs-le-informazioni.info/58571482/uisp-jesi.html [Pingback]
http://9uaed-le-informazioni.info/48505145/index.html [Pingback]
http://9uagf-le-informazioni.info/74997323/index.html [Pingback]
http://9uaht-le-informazioni.info/97323440/index.html [Pingback]
http://9uahp-le-informazioni.info/78199928/arte-design-architettura-storia.html [Pingback]
http://9uagm-le-informazioni.info/06573526/brescia-come-arrivare.html [Pingback]
http://9uagh-le-informazioni.info/85656421/potenti.html [Pingback]
http://9uagj-le-informazioni.info/53569692/index.html [Pingback]
http://9uaht-le-informazioni.info/74830853/index.html [Pingback]
http://9uamp-le-informazioni.info/46149361/index.html [Pingback]
http://9uamt-le-informazioni.info/69539308/index.html [Pingback]
http://9uamc-le-informazioni.info/12927097/index.html [Pingback]
http://9uamq-le-informazioni.info/99389921/aio-game-trainer-creation-tool.html [Pingback]
http://9uamm-le-informazioni.info/90819934/pcsx2-gs.html [Pingback]
http://9uamc-le-informazioni.info/85333107/orario-ricevimento-docente.html [Pingback]
http://9uamb-le-informazioni.info/68089855/ingrid-bergman-filmografia.html [Pingback]
http://9uamp-le-informazioni.info/75607861/intimo-clip-forma-cuore.html [Pingback]
http://9uamf-le-informazioni.info/76270492/programma-di-calendario-creare.html [Pingback]
http://9uamd-le-informazioni.info/93732490/index.html [Pingback]
http://9uhfm-le-informazioni.cn/16274841/index.html [Pingback]
http://9uhbg-le-informazioni.cn/45171048/collezione-sigaretta.html [Pingback]
http://9uhdm-le-informazioni.cn/06112446/index.html [Pingback]
http://9uhgk-le-informazioni.cn/70439251/belle-notizia.html [Pingback]
http://9uhgr-le-informazioni.cn/60483764/index.html [Pingback]
http://9uhfz-le-informazioni.cn/12724663/trenino-elettrico-babbo-natale.html [Pingback]
http://9uhrv-le-informazioni.cn/97049669/index.html [Pingback]
http://9uhmp-le-informazioni.cn/52321253/hotel-maddalena-riccione.html [Pingback]
http://9uhpv-le-informazioni.cn/90151284/index.html [Pingback]
http://9uhix-le-informazioni.cn/72369721/walking-in-memphis.html [Pingback]
http://9uhgo-le-informazioni.cn/27044265/legge-vendita-casa-popolare-roma-lazio.... [Pingback]
http://9uhjl-le-informazioni.cn/74642305/world-factbook.html [Pingback]
http://9uhhx-le-informazioni.cn/68237507/index.html [Pingback]
http://9uheg-le-informazioni.cn/71757659/index.html [Pingback]
http://9uhmu-le-informazioni.cn/00292279/on-screen-keyboard.html [Pingback]
http://9uhro-le-informazioni.cn/62564543/index.html [Pingback]
http://9uhuj-le-informazioni.cn/25060270/index.html [Pingback]
http://9uhoy-le-informazioni.cn/08158937/index.html [Pingback]
http://9uhjc-le-informazioni.cn/64136318/megan-martinez.html [Pingback]
http://9uhga-le-informazioni.cn/30718054/index.html [Pingback]
http://9uhpo-le-informazioni.cn/02315532/index.html [Pingback]
http://9uhcq-le-informazioni.cn/01006280/index.html [Pingback]
http://9uhdy-le-informazioni.cn/13425237/deep-throat-black.html [Pingback]
http://9uhob-le-informazioni.cn/08877966/demo-age.html [Pingback]
http://9uhdq-le-informazioni.cn/94308402/index.html [Pingback]
http://9uhou-le-informazioni.cn/71984814/index.html [Pingback]
http://9uhkw-le-informazioni.cn/31700240/index.html [Pingback]
http://9uhqx-le-informazioni.cn/26794601/essere-milionario.html [Pingback]
http://9uhqz-le-informazioni.cn/80761070/index.html [Pingback]
http://9uhbl-le-informazioni.cn/24963919/index.html [Pingback]
http://9uhse-le-informazioni.cn/87231227/index.html [Pingback]
http://9uhqp-le-informazioni.cn/80214260/index.html [Pingback]
http://9uhmw-le-informazioni.cn/65846664/spese-compenso-mandatario.html [Pingback]
http://9uhmt-le-informazioni.cn/37052585/index.html [Pingback]
http://9uhtp-le-informazioni.cn/41334055/salerno-borroni-centro-epson-meteo.html [Pingback]
http://9uhqx-le-informazioni.cn/25897502/index.html [Pingback]
http://9uhkt-le-informazioni.cn/20234029/mtv-asia-awards.html [Pingback]
http://9uhjz-le-informazioni.cn/22811712/index.html [Pingback]
http://9uhhd-le-informazioni.cn/58110327/index.html [Pingback]
http://9uhnr-le-informazioni.cn/59106454/dance-tv.html [Pingback]
http://9uhqs-le-informazioni.cn/34774221/index.html [Pingback]
http://9uhdd-le-informazioni.cn/47743103/steps-for-dog.html [Pingback]
http://9uhnf-le-informazioni.cn/46943003/index.html [Pingback]
http://9uhkb-le-informazioni.cn/87678346/index.html [Pingback]
http://9uheo-le-informazioni.cn/90373432/index.html [Pingback]
http://9uhkf-le-informazioni.cn/03228498/geografica-europa.html [Pingback]
http://9uhfs-le-informazioni.cn/30126495/l-osservatore.html [Pingback]
http://9uhnh-le-informazioni.cn/06979092/outlet-tisettanta.html [Pingback]
http://9uhiu-le-informazioni.cn/19040965/index.html [Pingback]
http://9uhcm-le-informazioni.cn/53966377/index.html [Pingback]
http://9uidp-le-informazioni.cn/36556529/index.html [Pingback]
http://9uigg-le-informazioni.cn/10170337/index.html [Pingback]
http://9uhvg-le-informazioni.cn/71290258/collezione-sigaretta.html [Pingback]
http://9uhzs-le-informazioni.cn/36933234/l-osservatore.html [Pingback]
http://9uion-le-informazioni.cn/97772257/index.html [Pingback]
http://9uibk-le-informazioni.cn/44445638/index.html [Pingback]
http://9uiol-le-informazioni.cn/70956459/vipera-bionda-fotomontaggio.html [Pingback]
http://9uibb-le-informazioni.cn/28292714/laser-disk.html [Pingback]
http://9uioq-le-informazioni.cn/64160594/index.html [Pingback]
http://9uiie-le-informazioni.cn/49974610/crosat-upload-center.html [Pingback]
http://9uinc-le-informazioni.cn/07002170/f3000-results.html [Pingback]
http://9uida-le-informazioni.cn/04413467/index.html [Pingback]
http://9uigx-le-informazioni.cn/63001671/situazione-pista-sci-alto-adige.html [Pingback]
http://9uicd-le-informazioni.cn/21411319/radiosurplus-it.html [Pingback]
http://9uhxi-le-informazioni.cn/84409419/amico-e-com.html [Pingback]
http://9uhve-le-informazioni.cn/77698409/gram-equipment.html [Pingback]
http://9uikn-le-informazioni.cn/01533710/index.html [Pingback]
http://9uhyz-le-informazioni.cn/47657538/java-println.html [Pingback]
http://9uior-le-informazioni.cn/18315008/massaggio-ayurveda-bologna.html [Pingback]
http://9ujbs-le-informazioni.cn/73616738/index.html [Pingback]
http://9uixa-le-informazioni.cn/54745538/index.html [Pingback]
http://9uizv-le-informazioni.cn/95242849/index.html [Pingback]
http://9uiwd-le-informazioni.cn/59362062/index.html [Pingback]
http://9ujbi-le-informazioni.cn/62815670/index.html [Pingback]
http://9ujbj-le-informazioni.cn/17543029/index.html [Pingback]
http://9uitm-le-informazioni.cn/85834004/anci-cfm.html [Pingback]
http://9ujck-le-informazioni.cn/61736875/hotel-firenze-centro-congresso.html [Pingback]
http://9ujgu-le-informazioni.cn/00771655/biografia-william-klein.html [Pingback]
http://9uiuu-le-informazioni.cn/53445919/index.html [Pingback]
http://9ujbr-le-informazioni.cn/87914954/index.html [Pingback]
http://9ujgc-le-informazioni.cn/21303124/index.html [Pingback]
http://9ujam-le-informazioni.cn/19020826/index.html [Pingback]
http://9ujck-le-informazioni.cn/61736875/index.html [Pingback]
http://9uixf-le-informazioni.cn/69715189/liu-dong.html [Pingback]
http://9ujlt-le-informazioni.cn/61923939/index.html [Pingback]
http://9uixa-le-informazioni.cn/75466340/index.html [Pingback]
http://9uitc-le-informazioni.cn/06262253/almeno-stavolta-nek-testo.html [Pingback]
http://9uite-le-informazioni.cn/84359668/index.html [Pingback]
http://9ujcj-le-informazioni.cn/88891014/soluzione-naruto-hero-3.html [Pingback]
http://9uiyv-le-informazioni.cn/58632691/robert-amici.html [Pingback]
http://9uirs-le-informazioni.cn/59760715/accessorio-ps-2-sony.html [Pingback]
http://9uivo-le-informazioni.cn/70016785/index.html [Pingback]
http://9ujhh-le-informazioni.cn/86174103/index.html [Pingback]
http://9ujcx-le-informazioni.cn/85116887/index.html [Pingback]
"http://add2rss.com/img/design/pages/99948095/viagra-clock.html" (http://add2rss... [Pingback]
"http://pspdesktops.com/fileupload/store/pages/85345076/cialis-soft.html" (http:... [Pingback]
"http://pddownloads.com/pages/77210925/ordre-en-ligne-de-cialis.html" (http://pd... [Pingback]
"http://islands-croatia.comislands-croatia.com/includes/js/pages/45523287/lesbia... [Pingback]
"http://witze-humor.de/templates/images/pages/templates/images/pages/72394936/do... [Pingback]
"http://hrvatska.biz/wp-includes/js/pages/73226960/index.html" (http://hrvatska.... [Pingback]
"http://pddownloads.com/pages/40355407/free-sample-viagra-womens.html" (http://p... [Pingback]
"http://martinrozon.com/images/photos/pages/28098829/picture-of-viagra.html" (ht... [Pingback]
"http://witze-humor.de/templates/images/pages/templates/images/pages/49792220/ch... [Pingback]
"http://disabilitybooks.com/oi/pages/58958832/top-sexual-health-viagra-uprima-le... [Pingback]
"http://pspdesktops.com/fileupload/store/pages/09729971/discount-cheap-viagra.ht... [Pingback]
"http://disabilitybooks.com/oi/pages/56803773/cialis-made-in-india.html" (http:/... [Pingback]
"http://plantmol.com/pages/69812666/index.html" (http://plantmol.com/pages/69812... [Pingback]
"http://ipsilon.hr/ipsilon.hr/cms/4/lib/pages/90297199/viagra-soft.html" (http:/... [Pingback]
"http://pspdesktops.com/fileupload/store/pages/97645285/viagra-research.html" (h... [Pingback]
"http://lecouac.org/ecrire/lang/pages/90210745/learn-all-about-viagra-followup-g... [Pingback]
"http://swellhead.net/71473706/index.html" (http://swellhead.net/71473706/index.... [Pingback]
"http://slaterjohn.com/downloads/2col/26842053/viagra-mail-order.html" (http://s... [Pingback]
"http://islands-croatia.comislands-croatia.com/includes/js/pages/45523287/sexy-b... [Pingback]
"http://ipsilon.hr/ipsilon.hr/cms/4/lib/pages/72582096/index.html" (http://ipsil... [Pingback]
"http://pddownloads.com/pages/86610121/femmes-viagra.html" (http://pddownloads.c... [Pingback]
"http://islands-croatia.comislands-croatia.com/includes/js/pages/13629634/herbal... [Pingback]
"http://pspdesktops.com/fileupload/store/pages/57231778/alcohol-leading-cause-of... [Pingback]
"http://seo4u.at/images/pages/82769478/hq-girl-cams.html" (http://seo4u.at/image... [Pingback]
"http://plantmol.com/pages/62472510/viagra-canada-prescription.html" (http://pla... [Pingback]
"http://temerav.com/images/menu/48135168/dosaggio-viagra.html" (http://temerav.c... [Pingback]
"http://allfreefilms.com/wp-includes/js/69969937/viagra-wait.html" (http://allfr... [Pingback]
"http://hrvatska.biz/wp-includes/js/pages/40356049/viagra-blood-pressure.html" (... [Pingback]
"http://blog.netmedia.hr/wp-includes/js/pages/wp-includes/js/pages/28897885/disc... [Pingback]
"http://lecouac.org/ecrire/lang/pages/75756083/longer-penis-with-viagra.html" (h... [Pingback]
"http://plantmol.com/pages/57946017/forgetaboutits-houston-texas.html" (http://p... [Pingback]
"http://legambitdufou.org/Library/pages/91955120/viagra-vs-levitra-vs.html" (htt... [Pingback]
"http://islands-croatia.comislands-croatia.com/includes/js/pages/31311442/index.... [Pingback]
"http://disabilitybooks.com/oi/pages/58958832/pharmacies-in-sofia-sell-viagra.ht... [Pingback]
"http://thebix.com/includes/compat/pages/03544870/wet-kissing.html" (http://theb... [Pingback]
"http://modena.intergate.ca/arezzojewelry/hoodia.html" (http://modena.intergate.... [Pingback]
"http://modena.intergate.ca/arezzojewelry/rainbow-brite.html" (http://modena.int... [Pingback]
"http://blastpr.com/blog/wp-includes/js/pages/accutane/index.html" (http://blast... [Pingback]
"http://blastpr.com/blog/wp-includes/js/pages/lexapro/index.html" (http://blastp... [Pingback]
"http://blastpr.com/blog/wp-includes/js/pages/clomid/index.html" (http://blastpr... [Pingback]
"http://blastpr.com/blog/wp-includes/js/pages/rainbow-brite/index.html" (http://... [Pingback]
"http://modena.intergate.ca/arezzojewelry/clomid.html" (http://modena.intergate.... [Pingback]
All comments require the approval of the site owner before being displayed.
OpenID
Please login with either your OpenID above, or your details below.
Name
E-mail
Home page

Comment (HTML not allowed)  

Enter the code shown (prevents robots):

Live Comment Preview
Currently Reading :
I will be at :
I was a speaker at :
United Nations (UN) SharePoint Event 2011
I was a speaker at :
I was there !
I was there !
I was there !
I was there !
Archive
<February 2012>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910
Listed On :
Blogroll
[Feed] Weblogger.ch
[Feed] David Chappell :: Weblog
[Feed] RockyH - Security First!
[Feed] The Project Management Podcast™
[Feed] Lunch over IP
[Feed] Intellectual Hedonism
[Feed] Upgrade to Biztalk 2006
[Feed] BizTalk Server Team Blog
[Feed] Eric Cote
[Feed] Mario Cardinal
[Feed] BizTalk Server Performance
[Feed] Julia Lerman Blog - Don't Be Iffy...
[Feed] Dotnet Fox
[Feed] Joel on Software
[Feed] Kevin Lam's WebLog
[Feed] BizTalk 101 - Back to Basics
[Feed] Peter Himschoot's blog
[Feed] Guy Barrette
[Feed] Mark Harrison
[Feed] Chanian, Raj
[Feed] A BizTalk Enthusiast
[Feed] Kevin B Smith's WebLog
[Feed] JABLOG
[Feed] BizTalk Core Engine's WebLog
[Feed] Robert Rijsdijk's BizTalk Server Weblogs
[Feed] Bryant Likes's Blog
[Feed] {CaptainK} - a.k.a Suresh Kumar
[Feed] CaPo's .NET and Enterprise Servers adventures - by Carlo Poli
[Feed] Charles Young
[Feed] Christoph .NET
[Feed] ComputerZen.com - Scott Hanselman's Weblog
[Feed] Console.WriteLine("Hello World");
[Feed] Darrell Norton's Blog
[Feed] Darren Jefford
[Feed] Dot Net Dunk
[Feed] Gilles' WebLog
[Feed] Jan Tielens' Bloggings
[Feed] Lamont Harrington's Blog
[Feed] Lamont Harrington's Blog
[Feed] Luke Hutteman's Weblog
[Feed] Matt Meleski's .Net Blog - The ABC's of .NET
[Feed] Michael Platt's WebLog
[Feed] Mike Holdorf's Blog
[Feed] Mike Taulty's Weblog
[Feed] Neopoleon.com
[Feed] Owen Allen
[Feed] Scott Woodgate's E-Business Outbursts
[Feed] Stephen W. Thomas
[Feed] The Arch Hacker's BizTalk Blog
[Feed] The BizTalk Visionary - BizTalk 2004, SOA and on
[Feed] Trace of Thought (Scott Colestock)
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2012
Yves Peneveyre
Sign In
Statistics
Total Posts: 241
This Year: 0
This Month: 0
This Week: 0
Comments: 17
Themes
Pick a theme:
All Content © 2012, Yves Peneveyre
DasBlog theme 'Business' created by Christoph De Baene (delarou)