In the previous two episodes in this series we described the position of Java in the Telecommunications industry, Telemanagement Forum and the basics of OSS/J. This episode focuses on the Order Management API (JSR 264), this is one of the OSS/J APIs being developed using the JCP process (proposed final draft 2 will be released May/June '07). It is also the API we covered during last weeks session at JavaOne.

Order management is a common process and virtually every organization does some sort of order management to ensure that it can process requests from it's customers and deliver the requested product (for example book, car, drivers license) or service (for example telephony, health insurance, TV). The Order Management API is (as far as we know) the only open and standards based API available for order management and therefore is relevant for many organizations developing an order management solution (not telecommunications only). By using this API as a basis for your order management solution you can reuse the knowledge of others (not reinventing the wheel) and reduce your integration costs.

The key features are:

  • Supports both simple and complex use cases

  • Supports long running transactions

  • Defines the managed entities on which the Order Management operations work (Order, OrderItems, etc). These are extended from the Telemanagement Forums Shared Information/Data Model, the items used from the TMF SID are the non Telecommunications specific ones.

  • Defines the (extendible) state model for Orders.

  • Support for creation, starting, updating and removing Orders.

  • Support for bulk operations to create, update, remove orders. These are available in an atomic (all must succeed) or best effort (failing ones will be reported back) flavor.

  • Support for notification to keep clients informed of progress of an Order (not only clients that submitted an order but also other interested clients).

  • Notifications that requests the client for validation of certain aspects of the order (before it continues processing).

  • Notifications that requests the client for additional input (before it continues processing).

  • Extensibility. The types of orders (and all contents) and the order states can be extended for your specific needs.

  • Flexible query possibilities like query by key, query based on a template and defining named queries (comparable to JDBC Prepared Statements).

  • Support for static and dynamic typing of attributes of an Order.

  • Support meta-operations that (for example) enable a client to discover at runtime what orders are available.

The Order Management API is not bound to telecommunications specific orders. The API allows for definition of your own order types and and thus can be customized to the specific needs of other industries. To ensure that the operations exposed by the Order Management API are not bound to any specific industry, a generic type 'Request' is defined. This Request type is the supertype of all Orders and all Order Management API operations operate on Requests. It is possible to define your own Order types as subtype of Request, or as subtype of one of the four predefined Request subtypes: ProductOrder, ServiceOrder, ResourceOrder, WorkOrder (the latter requires human intervention).

“All nice and dandy”, I hear you think, “but can't I achieve the same with BPEL?”. From a functional perspective you could realize the same functionality with BPEL (or many other technologies), however you would be inventing you own API instead of building on a standards based one. For example, BPEL will not give the standardized information model, state model or set of operations. You would need to define them yourself and thus you're creating a proprietary solution. The advantage of reduction in integration costs is lost.

<meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)" /><meta name="AUTHOR" content="Gero Vermaas" /><meta name="CREATED" content="20070329;13524000" /><meta name="CHANGEDBY" content="Gero Vermaas" /><meta name="CHANGED" content="20070514;14401000" /> </p> <style type="text/css"> <!-- @page { size: 8.5in 11in; margin: 0.79in } P { margin-bottom: 0.08in } --> </style> <p style="margin-bottom: 0in">The Order Management API does not attempt to boil the ocean, the following items are out-of-scope and not defined in the API:</p> <ul> <li> <p style="margin-bottom: 0in">Workforce management: Management of staff, schedules etc. is not part of Order Management.</p> </li> <li> <p style="margin-bottom: 0in">Inventory Management: There is a separate Inventory API defining this (JSR 142). Because the will often be a close relation between Order Management and Inventory it can make sense to implement both APIs in one product. Both APIs build on the same OSS/J concepts and interaction is smooth.</p> </li> <li> <p style="margin-bottom: 0in">Order decomposition: This is implementation specific and cannot be defined in the API.</p> </li> </ul> <p style="margin-bottom: 0in">This blog entry roughly covers the first part of the <a href="http://www28.cplan.com/cc158/session_details.jsp?isid=286860&ilocation_id=158-1&ilanguage=english">presentation </a>we did at JavaOne, the second part was answering the question “How does the Order Management API fit into a Service Oriented Architecture?”. Guess what the subject of the next entry in this series will be...</p> <div class="et_social_inline et_social_mobile_on et_social_inline_bottom"> <div class="et_social_networks et_social_5col et_social_slide et_social_rounded et_social_left et_social_no_animation et_social_withcounts et_social_withtotalcount et_social_outer_dark"> <div class="et_social_totalcount"> <span class="et_social_totalcount_count et_social_total_share" data-post_id="228"></span> <span class="et_social_totalcount_label">Shares</span> </div> <ul class="et_social_icons_container"><li class="et_social_facebook"> <a href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fblog.xebia.com%2Fjava-in-telecommunications-%25e2%2580%2593-order-management-api%2F&t=Java%20in%20Telecommunications%20%E2%80%93%20Order%20Management%20API" class="et_social_share et_social_display_count" rel="nofollow" data-social_name="facebook" data-post_id="228" data-social_type="share" data-location="inline"data-min_count="0"> <i class="et_social_icon et_social_icon_facebook"></i><div class="et_social_network_label"></div><span class="et_social_overlay"></span> </a> </li><li class="et_social_twitter"> <a href="http://twitter.com/share?text=Java%20in%20Telecommunications%20%E2%80%93%20Order%20Management%20API&url=http%3A%2F%2Fblog.xebia.com%2Fjava-in-telecommunications-%25e2%2580%2593-order-management-api%2F&via=@Xebia" class="et_social_share et_social_display_count" rel="nofollow" data-social_name="twitter" data-post_id="228" data-social_type="share" data-location="inline"data-min_count="0"> <i class="et_social_icon et_social_icon_twitter"></i><div class="et_social_network_label"></div><span class="et_social_overlay"></span> </a> </li><li class="et_social_linkedin"> <a href="http://www.linkedin.com/shareArticle?mini=true&url=http%3A%2F%2Fblog.xebia.com%2Fjava-in-telecommunications-%25e2%2580%2593-order-management-api%2F&title=Java%20in%20Telecommunications%20%E2%80%93%20Order%20Management%20API" class="et_social_share et_social_display_count" rel="nofollow" data-social_name="linkedin" data-post_id="228" data-social_type="share" data-location="inline"data-min_count="0"> <i class="et_social_icon et_social_icon_linkedin"></i><div class="et_social_network_label"></div><span class="et_social_overlay"></span> </a> </li><li class="et_social_googleplus"> <a href="https://plus.google.com/share?url=http%3A%2F%2Fblog.xebia.com%2Fjava-in-telecommunications-%25e2%2580%2593-order-management-api%2F&t=Java%20in%20Telecommunications%20%E2%80%93%20Order%20Management%20API" class="et_social_share et_social_display_count" rel="nofollow" data-social_name="googleplus" data-post_id="228" data-social_type="share" data-location="inline"data-min_count="0"> <i class="et_social_icon et_social_icon_googleplus"></i><div class="et_social_network_label"></div><span class="et_social_overlay"></span> </a> </li><li class="et_social_hackernews"> <a href="https://news.ycombinator.com/submitlink?u=http%3A%2F%2Fblog.xebia.com%2Fjava-in-telecommunications-%25e2%2580%2593-order-management-api%2F&t=Java%20in%20Telecommunications%20%E2%80%93%20Order%20Management%20API" class="et_social_share et_social_display_count" rel="nofollow" data-social_name="hackernews" data-post_id="228" data-social_type="share" data-location="inline"data-min_count="0"> <i class="et_social_icon et_social_icon_hackernews"></i><div class="et_social_network_label"></div><span class="et_social_overlay"></span> </a> </li></ul> </div> </div><span class="et_social_bottom_trigger"></span> <div class="post-nav pagination"> <div class="row"> <div class="col-md-6"><h4>Previous post</h4><p><a href="http://blog.xebia.com/xebia-podcast-is-now-live-podcastxebiacom/" rel="prev">Xebia Podcast is now live: podcast.xebia.com</a></p></div> <div class="col-md-6 text-right"><h4>Next post</h4><p><a href="http://blog.xebia.com/podcast-episode-2-online-scrum-introduction-part-1/" rel="next">Podcast episode 2 online: Scrum Introduction part 1</a></p></div> </div> </div> </div> <div id="comments" class="post-comments"> <h3 class="title">Comments</h3> <div class="pingback even thread-even depth-1" id="comment-18100"> <div class="comment-author vcard"> <cite class="fn"><a href='http://blog.xebia.com/2007/09/25/jsr264-order-management-api-released/' rel='external nofollow' class='url'>Xebia Blog</a></cite> <span class="says">says:</span> </div> <div class="comment-meta commentmetadata"><a href="http://blog.xebia.com/java-in-telecommunications-%e2%80%93-order-management-api/#comment-18100"> September 25, 2007 at 9:03 am</a> </div> <p>[...] The Order Management API 1.0 has been released. The Order Management API is (as far as we in the JSR264 Expert Group (EG) know) the only open and standards based API available for order management and is relevant for any organization developing an order management solution. By using this API as a basis for your Order Management solution you can reuse the knowledge of others (not reinventing the wheel), reduce your integration costs and create a flexible Order Management solution. In a previous blog post I already described the features of the API in detail, so I’ll just repeat the most important features: [...]</p> <div class="reply"><a rel='nofollow' class='comment-reply-link' href='http://blog.xebia.com/java-in-telecommunications-%e2%80%93-order-management-api/?replytocom=18100#respond' onclick='return addComment.moveForm( "comment-18100", "18100", "respond", "228" )' aria-label='Reply to Xebia Blog'>Reply</a></div> </div><!-- #comment-## --> </div> <!-- comments --> <div id="respond" class="comment-respond"> <h3 id="reply-title" class="comment-reply-title">Leave a Reply <small><a rel="nofollow" id="cancel-comment-reply-link" href="/java-in-telecommunications-%E2%80%93-order-management-api/#respond" style="display:none;">Cancel reply</a></small></h3> <form action="http://blog.xebia.com/wp-comments-post.php" method="post" id="commentform" class="comment-form"> <p class="comment-notes"><span id="email-notes">Your email address will not be published.</span> Required fields are marked <span class="required">*</span></p><p class="comment-form-comment"><label for="comment">Comment</label> <textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" aria-required="true" required="required"></textarea></p><p class="comment-form-author"><label for="author">Name <span class="required">*</span></label> <input id="author" name="author" type="text" value="" size="30" maxlength="245" aria-required='true' required='required' /></p> <p class="comment-form-email"><label for="email">Email <span class="required">*</span></label> <input id="email" name="email" type="text" value="" size="30" maxlength="100" aria-describedby="email-notes" aria-required='true' required='required' /></p> <p class="comment-form-url"><label for="url">Website</label> <input id="url" name="url" type="text" value="" size="30" maxlength="200" /></p> <p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="Post Comment" /> <input type='hidden' name='comment_post_ID' value='228' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /> </p><p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="953e12b891" /></p><p style="display: none;"><input type="hidden" id="ak_js" name="ak_js" value="215"/></p> </form> </div><!-- #respond --> </article> </div> </div> </div> </div> <footer class="footer" id="contact"> <div class="container"> <div class="row"> <div class="col-md-12"> <div class="row"> <div class="col-md-2"> <div class="label"> <svg width="79px" height="26px" viewBox="448 31 89 29" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch --> <desc>Xebia Blog</desc> <defs></defs> <g id="Xebia" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" transform="translate(448.000000, 31.000000)"> <path d="M43.1184641,13.2420493 L34.8147059,13.2420493 C35.3236928,11.4012903 37.0251634,10.1883871 38.8284314,10.1883871 C41.0679739,10.1883871 42.5513072,11.2728653 43.1184641,13.2420493 M34.7710784,16.0388615 L46.9576797,16.0388615 L46.9576797,15.2825806 C46.9576797,13.3133966 46.4923203,11.7294877 45.5470588,10.3881594 C43.9328431,8.29055028 41.5333333,7.00629981 38.9447712,7.00629981 C36.8651961,7.00629981 34.8583333,7.89100569 33.3168301,9.47491461 C31.9062092,10.9446679 31.179085,12.7854269 31.179085,14.8687666 C31.179085,16.8379507 32.022549,18.878482 33.4477124,20.3482353 C35.0183007,21.8893359 36.894281,22.6456167 39.1629085,22.6456167 C42.5367647,22.6456167 45.2125817,20.8048577 46.4923203,17.5514231 L42.6676471,17.5514231 C41.9405229,18.7643264 40.5880719,19.3921822 39.0465686,19.3921822 C36.5598039,19.4777989 34.9455882,18.1364706 34.7710784,16.0388615" id="Shape" fill="#FFFFFF"></path> <path d="M52.4547386,15.0114611 C52.4547386,12.4572296 54.330719,10.5451233 56.8029412,10.5451233 C59.2751634,10.5451233 61.2238562,12.5856546 61.2238562,14.9401139 C61.2238562,17.4087287 59.3478758,19.3351044 56.6138889,19.3351044 C54.4179739,19.3493738 52.4547386,17.4372676 52.4547386,15.0114611 M52.3238562,8.64728653 L52.3238562,2.6683871 L48.8336601,2.6683871 L48.8336601,22.4030361 L52.3238562,22.4030361 L52.3238562,21.1901328 C53.7344771,22.274611 55.2614379,22.7740417 57.0501634,22.7740417 C58.9988562,22.7740417 60.6712418,22.146186 62.0382353,21.0617078 C63.8705882,19.5206072 64.8885621,17.3088425 64.8885621,14.9543833 C64.8885621,12.7854269 63.9869281,10.6164706 62.2854575,9.14671727 C60.8748366,7.80538899 59.0424837,7.17753321 57.0356209,7.17753321 C55.1887255,7.13472486 53.6908497,7.56280835 52.3238562,8.64728653" id="Shape" fill="#FFFFFF"></path> <path d="M67.3171569,7.52 L70.6910131,7.52 L70.6910131,22.4030361 L67.3171569,22.4030361 L67.3171569,7.52 L67.3171569,7.52 Z M67.3171569,2.6683871 L70.6910131,2.6683871 L70.6910131,5.97889943 L67.3171569,5.97889943 L67.3171569,2.6683871 L67.3171569,2.6683871 Z" id="Shape" fill="#FFFFFF"></path> <path d="M76.6098039,14.754611 C76.6098039,12.3288046 78.5584967,10.4880455 80.9580065,10.4880455 C83.1684641,10.4880455 85.2334967,12.4001518 85.2334967,14.9543833 C85.2334967,17.2517647 83.226634,19.2209488 81.0161765,19.2209488 C78.6166667,19.2209488 76.6098039,17.3801898 76.6098039,14.754611 L76.6098039,14.754611 Z M85.6261438,22.4030361 L89,22.4030361 L89,7.52 L85.6261438,7.52 L85.6261438,9.30368121 C84.5936275,7.83392789 83.0230392,7.13472486 80.8125817,7.13472486 C78.5439542,7.13472486 76.7261438,7.84819734 75.1846405,9.43210626 C73.7740196,10.9018596 73.0468954,12.8139658 73.0468954,14.911575 C73.0468954,19.3779127 76.4207516,22.7312334 80.8852941,22.7312334 C83.226634,22.7312334 84.7681373,22.1033776 85.6116013,20.562277 L85.6261438,22.4030361 L85.6261438,22.4030361 L85.6261438,22.4030361 Z" id="Shape" fill="#FFFFFF"></path> <polygon id="Shape" fill="#FFFFFF" points="0.130882353 28.8813662 9.37990196 28.8813662 19.3851307 19.0925237 29.3612745 28.8813662 38.726634 28.8813662 24.0678105 14.4977609 38.8575163 0 29.4921569 0 19.3851307 9.931537 9.33627451 0 0 0 14.702451 14.4977609"></polygon> </g> </svg> </div> </div> <div class="col-md-4 contact"> <h3><a href="https://xebia.com">← Back to xebia.com</a></h3> </div> <div class="col-md-6 proudly"> <p><strong>Proudly part of the Xebia Group</strong>Xebia explores and creates new frontiers in IT. We provide innovative products and services and strive to stay one step ahead of our customers’ needs.</p> <p>We create digital winners.</p> <p><a href="https://cdn.xebia.com/documents/Cookies+Policy+Xebia+20170130.pdf">Cookie Policy</a>  <a href="https://cdn.xebia.com/documents/privacy-policy-xebia-group.pdf">Privacy Policy</a></p> </div> </div> </div> </div> </div> </footer> <div class="et_social_sidebar_networks et_social_visible_sidebar et_social_slideright et_social_animated et_social_rectangle et_social_sidebar_grow et_social_mobile_on"> <ul class="et_social_icons_container"><li class="et_social_facebook"> <a href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fblog.xebia.com%2Fjava-in-telecommunications-%25e2%2580%2593-order-management-api%2F&t=Java%20in%20Telecommunications%20%E2%80%93%20Order%20Management%20API" class="et_social_share" rel="nofollow" data-social_name="facebook" data-post_id="228" data-social_type="share" data-location="sidebar"> <i class="et_social_icon et_social_icon_facebook"></i> <span class="et_social_overlay"></span> </a> </li><li class="et_social_twitter"> <a href="http://twitter.com/share?text=Java%20in%20Telecommunications%20%E2%80%93%20Order%20Management%20API&url=http%3A%2F%2Fblog.xebia.com%2Fjava-in-telecommunications-%25e2%2580%2593-order-management-api%2F&via=@Xebia" class="et_social_share" rel="nofollow" data-social_name="twitter" data-post_id="228" data-social_type="share" data-location="sidebar"> <i class="et_social_icon et_social_icon_twitter"></i> <span class="et_social_overlay"></span> </a> </li><li class="et_social_linkedin"> <a href="http://www.linkedin.com/shareArticle?mini=true&url=http%3A%2F%2Fblog.xebia.com%2Fjava-in-telecommunications-%25e2%2580%2593-order-management-api%2F&title=Java%20in%20Telecommunications%20%E2%80%93%20Order%20Management%20API" class="et_social_share" rel="nofollow" data-social_name="linkedin" data-post_id="228" data-social_type="share" data-location="sidebar"> <i class="et_social_icon et_social_icon_linkedin"></i> <span class="et_social_overlay"></span> </a> </li><li class="et_social_googleplus"> <a href="https://plus.google.com/share?url=http%3A%2F%2Fblog.xebia.com%2Fjava-in-telecommunications-%25e2%2580%2593-order-management-api%2F&t=Java%20in%20Telecommunications%20%E2%80%93%20Order%20Management%20API" class="et_social_share" rel="nofollow" data-social_name="googleplus" data-post_id="228" data-social_type="share" data-location="sidebar"> <i class="et_social_icon et_social_icon_googleplus"></i> <span class="et_social_overlay"></span> </a> </li><li class="et_social_hackernews"> <a href="https://news.ycombinator.com/submitlink?u=http%3A%2F%2Fblog.xebia.com%2Fjava-in-telecommunications-%25e2%2580%2593-order-management-api%2F&t=Java%20in%20Telecommunications%20%E2%80%93%20Order%20Management%20API" class="et_social_share" rel="nofollow" data-social_name="hackernews" data-post_id="228" data-social_type="share" data-location="sidebar"> <i class="et_social_icon et_social_icon_hackernews"></i> <span class="et_social_overlay"></span> </a> </li></ul> <span class="et_social_hide_sidebar et_social_icon"></span> </div><div class="et_social_mobile_button"></div> <div class="et_social_mobile et_social_fadein"> <div class="et_social_heading">Share This</div> <span class="et_social_close"></span> <div class="et_social_networks et_social_simple et_social_rounded et_social_left"> <ul class="et_social_icons_container"><li class="et_social_facebook"> <a href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fblog.xebia.com%2Fjava-in-telecommunications-%25e2%2580%2593-order-management-api%2F&t=Java%20in%20Telecommunications%20%E2%80%93%20Order%20Management%20API" class="et_social_share" rel="nofollow" data-social_name="facebook" data-post_id="228" data-social_type="share" data-location="sidebar"> <i class="et_social_icon et_social_icon_facebook"></i> <div class="et_social_network_label"><div class="et_social_networkname">Facebook</div></div> <span class="et_social_overlay"></span> </a> </li><li class="et_social_twitter"> <a href="http://twitter.com/share?text=Java%20in%20Telecommunications%20%E2%80%93%20Order%20Management%20API&url=http%3A%2F%2Fblog.xebia.com%2Fjava-in-telecommunications-%25e2%2580%2593-order-management-api%2F&via=@Xebia" class="et_social_share" rel="nofollow" data-social_name="twitter" data-post_id="228" data-social_type="share" data-location="sidebar"> <i class="et_social_icon et_social_icon_twitter"></i> <div class="et_social_network_label"><div class="et_social_networkname">Twitter</div></div> <span class="et_social_overlay"></span> </a> </li><li class="et_social_linkedin"> <a href="http://www.linkedin.com/shareArticle?mini=true&url=http%3A%2F%2Fblog.xebia.com%2Fjava-in-telecommunications-%25e2%2580%2593-order-management-api%2F&title=Java%20in%20Telecommunications%20%E2%80%93%20Order%20Management%20API" class="et_social_share" rel="nofollow" data-social_name="linkedin" data-post_id="228" data-social_type="share" data-location="sidebar"> <i class="et_social_icon et_social_icon_linkedin"></i> <div class="et_social_network_label"><div class="et_social_networkname">LinkedIn</div></div> <span class="et_social_overlay"></span> </a> </li><li class="et_social_googleplus"> <a href="https://plus.google.com/share?url=http%3A%2F%2Fblog.xebia.com%2Fjava-in-telecommunications-%25e2%2580%2593-order-management-api%2F&t=Java%20in%20Telecommunications%20%E2%80%93%20Order%20Management%20API" class="et_social_share" rel="nofollow" data-social_name="googleplus" data-post_id="228" data-social_type="share" data-location="sidebar"> <i class="et_social_icon et_social_icon_googleplus"></i> <div class="et_social_network_label"><div class="et_social_networkname">Google+</div></div> <span class="et_social_overlay"></span> </a> </li><li class="et_social_hackernews"> <a href="https://news.ycombinator.com/submitlink?u=http%3A%2F%2Fblog.xebia.com%2Fjava-in-telecommunications-%25e2%2580%2593-order-management-api%2F&t=Java%20in%20Telecommunications%20%E2%80%93%20Order%20Management%20API" class="et_social_share" rel="nofollow" data-social_name="hackernews" data-post_id="228" data-social_type="share" data-location="sidebar"> <i class="et_social_icon et_social_icon_hackernews"></i> <div class="et_social_network_label"><div class="et_social_networkname">Hacker News</div></div> <span class="et_social_overlay"></span> </a> </li></ul> </div> </div> <div class="et_social_mobile_overlay"></div> <!-- DO NOT COPY THIS SNIPPET! — HubSpot Identification Code --> <script type="text/javascript"> (function(d,w) { w._hsq = w._hsq || []; w._hsq.push(["setContentType", "blog-post"]); })(document, window); </script> <!-- End of HubSpot Identification Code — DO NOT COPY THIS SNIPPET! --> <!-- Start of Async HubSpot Analytics Code for WordPress v1.2.1 --> <script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/697348.js"></script> <!-- End of Async HubSpot Analytics Code --> <script type='text/javascript' src='http://blog.xebia.com/wp-content/plugins/akismet/_inc/form.js?ver=3.3.2' defer onload=''></script> <script type='text/javascript' src='http://blog.xebia.com/wp-includes/js/jquery/jquery.js'></script> <script type='text/javascript' src='http://blog.xebia.com/wp-content/plugins/monarch/js/idle-timer.min.js?ver=1.3.2' defer onload=''></script> <script type='text/javascript'> /* <![CDATA[ */ var monarchSettings = {"ajaxurl":"http:\/\/blog.xebia.com\/wp-admin\/admin-ajax.php","pageurl":"http:\/\/blog.xebia.com\/java-in-telecommunications-%e2%80%93-order-management-api\/","stats_nonce":"caa43f2a94","share_counts":"660bc06f32","follow_counts":"6e09f978fd","total_counts":"38359ece96","media_single":"f59af8739a","media_total":"a51e8aa676","generate_all_window_nonce":"ff2eb7c4d1","no_img_message":"No images available for sharing on this page"}; /* ]]> */ </script> <script type='text/javascript' src='http://blog.xebia.com/wp-content/plugins/monarch/js/custom.js?ver=1.3.2' defer onload=''></script> <script type='text/javascript' src='//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js?ver=3.3.6' defer onload=''></script> <script type='text/javascript' src='http://blog.xebia.com/wp-includes/js/wp-embed.min.js?ver=4.8' defer onload=''></script> </body> </html>