Dynamics AX
  RSS Feed  LinkedIn  Twitter
Want to turn you're data into a true asset? Ready to break free from the report factory?
Ready to gain true insights that are action focused for truly data informed decisions?
Want to do all of this across mutliple companies, instances of Dynamics and your other investments?
Hillstar Business Intelligence is the answer then! (www.HillstarBI.com)

Hillstar Business Intelligence for Microsoft Dynamics AX and NAV on Mobile, Desktop, Tablet

Let us prove to you how we can take the complexity out of the schema and truly enable users to answer the needed questions to run your business! Visit Hillstar Business Solutions at: www.HillstarBI.com

Monday, October 31, 2011

Happy Halloween!

Emoticon Pumpkin Art, designed and carved by me!

Well, Halloween is here, and we are smack in the middle of fall. I love fall, one of my favorite times of the year, other than the cold of course. I hope everyone has a safe and happy Halloween this year. My treats, for everyone, is a recap post of the Freaky Tech Friday series I did to honor Halloween.

I hope you have enjoyed this series. It was my, at times, cheesy attempt to mix in some form of a tribute to this time of year, mixed with some decent content that hopefully was relevant and added value.

There is a lot to cover for the Dynamics world right now, very exciting times in deed. We have AXUG Summit next week, which I will be at myself, as well as coming up other great events. So look for continued coverage of the Dynamics Ecosystem, right here.

That's all for now, once again have a safe, happy and scary - Halloween!

Till next time!

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , , ,

Friday, October 28, 2011

Freaky Tech Friday - The Killing Zone

Well Ghosts and Ghouls, it seems you dare to return for the last and final Freaky Tech Friday post of this years haunting season. It came from Another Platform, didn't drive you away. Entering The Abyss of Integration didn't drive you mad, and your survived Attack of the Zombie Processes. Now let us enter, The Killing Zone.

This tale, is one of great suspense, and danger, focused around the fact that if the new design patterns, thought processes and concepts that come as part of AX 2012 are not fully understood and used, you will not make it out of the Killing Zone alive. You will end up dead! Or at least at a dead end with your Dynamics AX, and it's ROI. This is an easy place to survive if your new the the Dynamics AX world, however for those of us that have been working with the product since it earlier days, to quote "The Times, they are a changing".

To this point, they have changed, with so many different things to understand. One hot topic I keep talking about is around Workflows in AX 2012, and how it should be used to model business processes. There are several other area's however, from how you integrat with AX, making use of the SysOperations Framework, vs. RunBasebatch, and even planning for the new delcrative engine that empowers the new option for configuration needs that a customer might have for it's products.

I've not spent much time on this topic yet, however the new configurator within AX 2012 is based on Microsoft Solver Foundation technology, which is a declarative based decision engine, vs. the current Product Builder, rules based engine. Not to get to deep on this specific topic, as it well deserves many, many post.

Some Area's that need special attention, if you are to avoid having your final resting place be within the killing zone, are.:

There are a lot of other, specific's that can trap you into falling into the killing Zone, and killing your chances of maximizing your ROI, and getting some great new use cases that come as part of what is offered now in AX 2012.

There are cases, specifically related to upgrades from older to version of AX to AX 2012, that you have to use the older concepts. As the value is not there maybe to change a bunch of code, as part of the upgrade, just to use the new frameworks. However, before AX 7 takes shape for such cases, those area's will have to be addressed. Also, when upgrading is the focus, still keep in mind that anything new, or anything that must change, should change and use the new concepts, vs. the older ones.

Well Ghosts and Ghouls, take heed to these warnings, and avoid having the killing zone be your final resting place. That's all the haunting post for this season of terror, stay safe and if you dare return, we shall be waiting here, ready to scare you next year.

Tell next time!

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , , , , , , , ,

Thursday, October 27, 2011

AX 2012 - Table Inheritance Exposed

I'm been convering, as part of my post on this blog some of the great new features that come as part of Microsoft Dynamics AX 2012. One of those new topics, that really needs some deep understanding is around derived tables, also known as table inheritance.

This concept is very new to AX 2012, and some key master data elements, like the EcoResProduct data set, that represents the Product-Item Data in AX 2012 make use of this. Take away the complexity that can be read into this concept, in it's simpliest form derived tables are meant to represent master data, not transactional data. As well, this new concept is meant to address the need to shared and common fields among a dataset. The concept of when to use table inheritance, or derived table concepts, is throughly covered in the following MSDN article: When to Use Table Inheritance [AX 2012].

There are some very key concepts that are clearly laid out, for what table inheritance is meant to be used for, and what is' not designed to do. From the article: "When you consider the use of inheritance between two tables, one table is the proposed base table, and the other is the proposed derived table."

Another nice resource, which goes hand in hand with understanding derived tables, is how to work with data from X++ that is contained within those datasets that make use of Table Inheritance. That is the following walk through: Selecting Data from a Table Inheritance Hierarchy [AX 2012] "This topic explains how you can maximize the efficiency of your operations that read data from tables that are related through inheritance."

With these two resources, you can start to understand the concepts behind table inheritance in AX 2012. The final resource, which reference these two actually, is Walkthrough: Creating Base and Derived Tables [AX 2012] "In Microsoft Dynamics AX, a table can inherit from another table. The AOT node for each table has the Extends property which you can use to derive your table from a table that you specify. There are other table properties related to inheritance which must be assigned values in a specific sequence." With understanding the thought process of table inheritance, as well as how to work with such tables via X++, the walkthrough that was just referenced is key in one understanding of how to create base and derived tables that use the concepts of table inheritance.

Now, with all of this in hand, it's important to understand what this does to the actual query, that the AX kernel generates and executes against the SQL Server database. This places Joins that could impact performance, not help it. This is why it's very critical in understanding the purpose of based and derived tables, and that it's only meant for certain types of scenario's, which one of them is not transactional tables.

Hopefully with this better understanding of Table inheritance, concepts like I described in the following post, "Microsoft Dynamics AX 2012 - MorphX Drag and Drop, but no fields", makes a lot more sense. You have to build up to concepts sometimes, in order to gain a true understanding of a given topic. Table Inheritance and it's use for creating Base and Derived tables is one of those topics in AX 2012.

Table Inheritance, when properly understood can be a new design tool that helps reduce the amount of duplicate fields, and data that span like datasets. This can be a great tool, however this one has a sharp double-edge to it, that can cause havoc is used in an improper manner. Well that's all for this post, check back soon as a whole lot more to come!

Till next time!

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , , ,

Wednesday, October 26, 2011

AXUG Summit 2011 - Here we come Vegas!

With the release of Microsoft Dynamics AX 2012, there is so much to take in, understand and learn. Because of this fact, more than ever, events like AXUG Summit 2011 are critical to connecting and learning about the new release. There is a lot of great sessions planned around summit this year. A host of partners, and a lot of Microsoft driven, as well as customer driven sessions will exists for your enjoyement and learning.

This years event has totally sold out, and we be a record year for attendance. This is the first time that this event has sold out, and this I believe speaks volumes to the interest level in Microsoft Dynamics AX, as well as the value people place on the AXUG Summit event.

I myself will be there with Sunrise Technologies. I will be leading and co-leading a few sessions, with the following list that is for sure sessions I will be apart of.:
  • Implementing Microsoft Dynamics AX - Solution Architecture
  • Sunrise Partner SHowcase - AX in the cloud: Today & Tomorrow
  • Services with Microsoft Dynamics AX 2012
  • AXUG Summit 2011 training class - Setup and Use of SSRS with AX

This is going to be a great event, with so much going on, it will be hard to attend everything for sure. I will also be covering the event on my blog, as well as my twitter account. Make sure to follow me so you can stay up to date with the latest AX and Dynamics ERP related news.

Follow me:

Hopefully I can see some of you there, make sure yo stop by the Sunrise booth, during the expo hours, and if I'm not there, tell Heather I sent you!

I'm really looking forward to this great event, and by far I believe it's the most important event of the year when it comes to conferences related to Microsoft Dynamics AX. This is where a lot of connections, knowledge, and bottom line value can be gained.

If you missed out, make sure to check out the early bird specials for next years summit. It's well worth the low cost, and the return on investment from doing so is just amazing. There is no other single event, that you can gain so much real world applicable knowledge, and why I suggest to every existing, or just newly signed AX customer become an active member of AXUG. As well, I also highly recommend each customer send someone, or a few someone's, to attend the Summit Conference every year.

Hope to see you in Las Vegas on the Nov 7th week! Till next time!

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , , , , , ,

Tuesday, October 25, 2011

AX 2012 - Excel Add-in Revisited

With the release of Microsoft Dynamics AX 2012, came some great new ways of achieving business requirements, and user experiences. One of those is the Excel Add-in for Microsoft Dynamics AX 2012. I first wrote about this topic, back in June, in which you can find here: Microsoft Dynamics AX 2012 Excel Add-in. This has been a hot post actually, with a lot of comments, and a lot of visits.

It's rightfully so that it should be, being that it's new, and there is some confusion on how to do some of the more complex data sets, within AX, that go beyond just a simple table, which that first post covered for us. With that in mind, I thought I would help clear the air a little bit, in how the Excel Add-in is actually very flexible, and something to watch out for in December from Microsoft on this topic.

First, lets look at the starting point, in which we can start to work with more advanced data sets in AX. This concept, is enabled through the use of document services. This is the way, in which complex data sets in AX are exposed internally and externally of AX 2012. This is true, even for the Excel Add-in.

From the excel point of view, what we are talking about is the Add Data ribbon button, and when the drop down appears clicking on the Add Data, instead of Add Tables.

When clicking on this, for the first time, if you've not setup any Document Data Sources within AX 2012, your selection options will be blank. Now we have talked a little bit about this new concept of Document Data Sources, in the following post.: AX 2012, PowerPivot and a Dash of OData Feeds

In that above post, I covered with you how to enable Excel 2010 PowerPivot to work with OData Feeds from AX 2012. This was enabled through having Query Type of Document Data Sources enabled through the Organization Administration module, Setup, Document Management and finally Document Data Sources.

Here we can also add a document data source, of type service. These services must be document services and extend from the AIF Document Services types. These can not be custom services that do not extend as part of the AIF document services.

With that in mind, we can add a couple of document services, to our list, from within that form, as seen below.

Now that we have these services as document data sources within AX 2012, we can now go back to Excel 2010, within the Excel Add-in and click on our add data, and see our two new services we can make use of.

With this, now we can work with more complex data sets within AX 2012. This also means, that Office 2010, very much is a major part of the user experience in regard to AX 2012. This also means, that some very complex data set needs, can be accomplished through the use of Query Objects, and Document Services that wrap those query objects to expose them internally and externally of AX 2012.

With this said, there are some issues, and area's to watch out for. Basically, there are some super normalized data sets, like customers, vendors, etc. To help address those needs, Microsoft will be releasing in December a resource kit, that will contain artifacts that help enable the use of the Excel Add-in, for the master data, that has some super normalization aspects to it, that make it a little harder to work with from Excel. The basic concept will still be used that you see above here, that will be enabled with staging tables that the process will still use document services to enable.

I hope this helps further explain the value of the Microsoft Dynamics AX 2012 Excel Add-in and how it can be used right now with even more complex data sets, than just simple tables. You enable this through the use of Document Services. Also, it's very important to understand that Microsoft will be releasing that resource kit to help out with some of the super normalized master data elements. Finally, you can create your own document services, that wrap your own custom data sets, or query objects, that in turn can be consumed and made use of in a bi-directional nature through Excel. This is a huge benefit to customers of AX 2012, and something that needs to be considered when thinking about designing and developing scope for customer.

That's all for now, check back soon as more to come. Till next time!

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , , , , , ,

Friday, October 21, 2011

Freaky Tech Friday - Attack of the Zombie Processes!

Well, I see you have come back for yet another tale of spine tingling terror. So far we have faced and survived together, It Came from Another Platform as well as The Abyss Of Integration. Now we venture into the wastelands, that once were filled with productive people. Now Zombie Processes have invaded, and are draining value from your current ERP legacy system. What exactly is a Zombie Process you may ask, let me explain...

Zombie - "typically depicted as mindless, shambling, decaying corpses."


Process - "typically describes the action of taking something through an established and usually routine set of procedures."


Zombie Process - "A mindless, shambling, decaying set of actions continued to be executed based on estalbished and forgetton procedures, that are very much routine."

With this set, then how would one avoid the horde, of mass decaying processes? How can you fend off this attack? Enter Super AX 2012, to save the day! With it's aresnal of weapons, AX 2012 can help beat back the onslaught of decaying processes in your company, with it's ability to agile, Dynamic in nature, and flexible as your business needs it to be.

With all the marketing taking out, in the real world, you can overcome process that are rigid, or where other legacy ERP systems have solidified you, and your innovation, with electronic concrete. I've seen AX 2012, in the wild now, battling through old harden processes, and slamming through the painfully stiff concrete walls that existed because of a legacy systems limits.

If anything, I think the issue is understanding the best path to take for value gained, as there are a lot of ways to solve business requirements with what AX 2012 offers, that never really existed before.

This warning of Zombie Processes, is also for Partners. We have to think differently than ever before in how we approach issues, and solutions to those issues. There are a lot of new design patterns, and ways things should be done with new processes, code, approaches to business requirements in general.

Some really clear examples of how AX 2012 makes the threat of Zombie processes forming an unstoppable hoard, can be seen in recent post's that I've spent a lot of time. First the Modeling the world, concept that can be seen specifically in the desired vision to use Workflows in AX 2012 to enable business process modeling.

With this, business processes are much more flexible, as they were modeled using the .Net Workflow designer. In the past workflows were not as flexible, in terms of AX, until AX 2012. The benefit in this, is that you can code less and model more, for business processes, and in turn business process management can have real impact on the process within AX.

When the business needs flexibility to change, it's very possible, and doesn't cost, or shouldn't cost, an arm and a leg, or a few hundred brains, to change. This focus on modeling is really a key concept, one that truly makes AX 2012 a generational shift in ERP technology. I mean if a business can change it's workflow in it's ERP package, with little technical help, how fast a business can move is up to them. No limited by brain eating zombie processes!

To wrap up, the take away, is a focus on modeling with AX 2012. This includes business process modeling, as well as other key concepts like organizational, security, etc. Focus your functional and technical designs for these area's around the latest design patterns and key concepts. There are a lot of great new things in AX 2012, and modeling business processes with workflows is for sure one of those area's.

Well, looks like we will survive the Zombie Process Apocalypse, thanks to our super hero, Microsoft Dynamics AX 2012. A powerful weapon, in the rights hands of a trusted Partner. Scare you next week Ghosts and Ghouls, when we dare enter "The Killing Zone".

Update: I did want to tip my hat to the *nix crowd, in that these Zombie Processes have nothing in relation to the term used for Unix / Linux OS Zombie Processes. So there you go...

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , , ,

Wednesday, October 19, 2011

Modeling Business Processes with AX 2012 and Workflow - Part III - Enabling Custom Workflows

With the release of Microsoft Dynamics AX 2012, one of the more interesting improvements has been around Workflows, and their desired use for modeling business processes within AX 2012. This is why I started a series of post, that will cover workflows in AX 2012, and how the vision is truly to enable a model more and code less, for modeling business processes. I started off this series, with Modeling Business Processes with AX 2012 and Workflow. In that we reviewed the vision, in how workflows were going to remove the gap that exists between development and business process modeling.

From there, we took the workflow topic, and talked in the post about, Modeling Business Processes with AX 2012 and Workflow - Part II - What's new. In that post, we covered the what's new for AX 2012 workflows vs. AX 2009. We also covered that workflows can not be upgraded from AX 2009 to AX 2012 workflows. This is a truly different engine and, so it's really impossible to create a script that would enabling the upgrading of AX 2009 workflows to AX 2012. You would want to take advantage of the what's new in workflows for AX 2012 anyway, and so the value of offering an upgrade on that thought alone, makes such an upgrade have an even smaller chance of adding value.

Well we continue our dive into workflows, for AX 2012, with this post focusing on Enabling Custom Workflows in AX 2012. Like a lot of topics, with AX 2012, there are some really wonderful, existing resources out there, from Microsoft and from other places, that I will link to from this post, that help send what's required for custom workflows to exist. These resources, will enable use to create custom workflows and to enable workflows for modules, and forms that don't already have workflows enabled for use.

From there, I will circle back around about the vision, and desire for workflows to be used over development. So lets get started, by reviewing some existing resources online. First lets make a stop at Implementing workflow for Microsoft Dynamics AX [AX 2012]. This is a very important resource, and the very first book marked one that you add right now. This is a great resource, that will take you through the Creating workflow Types, Handling Workflow Events, Workflow Security and so on.

On this MSDN Resource page, you will also find some very useful and helpful walkthroughs.:

With these resources, you can easily start to take advantage of workflow development, and enabling workflows on existing items, as well as totally custom modules in AX 2012.

Some of the main take away's from this, is that now more than ever, it's easy to enable workflows, and so all business process design, should be considered with this fact in mind. Workflows in AX 2012 are flexible, not rigid. They are easy to design, and maintain, and decrease the technical scope it takes to meet a specific companies requirements. Think of workflows first in your designs, before you would think of specific development modifications only. That still might be needed, but it's a lot better move to have a workflow when possible than total custom code.

Well I hope this has you thinking of workflows, and it's impact and importance on design for AX 2012 projects. This is a great leap forward, and part of that bigger Modeling the world picture. That's all for now, but check back soon as a whole lot more to come! Till next time!

Also Don't forget this! Make sure to visit the following: Have Questions about Upgrading to Dynamics AX 2012? Get Your Answers Here! Make sure and submit those questions. Any and all levels, from planning, to PM, to Functional, Technical. The idea is to foster total community knowledge about this important topic.

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , , , , ,

Monday, October 17, 2011

Upgrading to AX 2012 - What are the important questions you have?

With the release of Microsoft Dynamics AX 2012 into full swing, the Official Microsoft Dynamics Community site, has started something new, in helping get the community questions that are important front and center, and answered by Partner experts.

The first round of focused questions starts today, and ends this Friday. So you have a week to get your questions in for this round. I've been asked to participate in this new offering from Microsoft, and I think it's a great way to get some Ecosystem / Community questions that mean the most to companies, answered.

This is a great way to interact with the Dynamics Community in a multidimensional manner. These type questions and answers will be facilitated by Microsoft, through the Community blog, and be answered by a panel of selected experts, to help foster knowledge, community awareness and growth.

So please use the following link: Have Questions about Upgrading to Dynamics AX 2012? Get Your Answers Here! Submit your questions between now and Friday on AX 2012 upgrading. Once all the answers are up, for each time we have one of these session, I will reference back the highlight post, as well as when the answers are up.

That's all for now, but I have a whole lot more to cover this week.


"Visit the Dynamics AX Community Page today!"

Labels: , , , , , , ,

Friday, October 14, 2011

Freaky Tech Friday - The Abyss Of Integration

Last week, we dared to enter into Freaky Tech Friday - It came from another Platform. This hellish post, covered the dark path of how other-worldy platform technologies could be used in a solution-stien way of creating offering that only igor could love. As part of that walk on the wild side, in which we highlighted the use of the ghoulish way in which services could be hosted as part of AX 2012 on IIS, for consumption not just be internet external consumers, but also by other technologies that could not consume net.tcp based service binding.

I warned you all, that if you dared to come back, we would move forward in our dark quest of knowledge and enter in to the abyss of integration. This is a place, truly of no return. Well maybe there are some returns, specifically deep and dark returns on investment actually.

The abyss of integration is covered with a cesspool of options, in which one would not dare use for enabling connections with AX 2012. I say not dare use, in that well, you actually might find neat and should use, when the time is right and the integration needs call for it. For those that want to brave this dark path, I have three area's to highlight for you.

First lest talk about Asynchronous integration needs. This requirement can sometimes real it's ugly head, and how do you defeat such a monster? Well You can employee several tools, other than just holy water, including BizTalk and the use of Message Queuing with AX 2012.

First lets start with BizTalk, which in it's devilish acts, can help enable both Synchronous and Asynchronous in nature integration's. The best place to start for this area, is the blessings found in the following white paper: Microsoft Dynamics AX 2012 White Paper: Using Microsoft BizTalk Server 2010 to Exchange Documents with Microsoft Dynamics AX. Without this guide, you will become yet another lost soul, on the road to the center of the abyss, never to be seen or heard from again.

This white paper will cover topics that include Enterprise Application Integration, Business to Business Integration as well as Application to Application integration concepts. The target audience should not be faint of heart, and should have knowledge about developing and administrating BizTalk, from a past life.

Others have braved this part of the abyss before, so thankfully there is a way forward, even beyond the whitepaper itself. The following is a good little post about catching faults from AX WCF Services, that might can help you live through the night, and survive long enough to face more of the abyss of integration.: Catching Faults from Dynamics AX 2012 WCF services

Moving own, and if you're still part of the living, then we can dare to look into the sea of nothingness, which is flat in the middle of this abyss we now call home. I refer to Message Queuing with AX 2012. Another holy script exists for this part of the journey as well, which can be found at the following location. Deploy Message Queuing for AIF [AX 2012]

A passage from this light in a dark place of Queuing:
"The MSMQ adapter for Microsoft Message Queuing is included with Microsoft Dynamics AX.

To send documents by using Message Queuing, you must install it on a computer on the network and create at least one public queue.

To receive documents by using Message Queuing, you must install Message Queuing and create at least one queue on a computer that has Application Object Server (AOS) installed, and that has been configured to run Application Integration Framework (AIF) batch jobs."

Well Ghosts and Ghouls, that's all for this freak feast. I'm glad to see you've survived this brief tour of the abyss of integration. Scare you next week, when we review Attack of the Zombie Processes! Scare you next time.

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , , , , ,

Thursday, October 13, 2011

AX 2012 Reports Executing on your iPad

The release of Microsoft Dynamics AX 2012 has brought a lot of great new possibilities to companies looking for the next generation ERP platform to empower their business. There is a lot of coverage for AX 2012, all over the web and blogsphere. More coverage than ever has existed for the Microsoft Dynamics product. I personally think this is a wonderful thing, because the more hands and more great minds that focus on AX, the better it becomes.

One of the neat things for this week, that a fellow peer Murray Fife, from Junction Solutions points out is how to execute and run your AX 2012 Reports right on your iPad! You can view his slideshare about this great find here.: Accessing Dynamics AX 2012 Reports On Your iPad

Murray actually posted this four months ago, and has a lot of other great AX 2012 related slideshares that I recommend you check out from the link above.

Basically the idea is that you use Sketch Reports app on your iPad and connect it to your reporting instance. Sketch Reports app is the older app now, and a updated new app from this same developer, which is recommend now over the Sketch app is Mobi Reports Pro. You can check out the app, from the app store page here.: Mobi Reports Pro Apple App Store Page.

From the App store page.:
"Mobi Reports Pro is an iPhone and iPad report viewer for Microsoft SQL Server Reporting Services. It displays your reports from your reporting services folders and lets you navigate between them."

Many thanks for Murray for taking the time and sharing with the community, and I will be downloading the Mobi Reports Pro, myself, right after I get done writing this blog post.

That's all for now, check back soon as more to come. Till next time!

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , , , , , ,

Wednesday, October 12, 2011

AX 2012 Issue: Cannot execute a data definition language command on Dimension set balance temporary data

So, I ran into something new today with AX 2012. The following error message starting showing up, within an instance that has two AOS(es). It showed up anytime any process needed to post to the General Ledger area.

"Cannot execute a data definition language command on Dimension set balance temporary data (DimensionFocusBalanceTmp). Financial dimension set: 0, 0.
The SQL database has issued an error."

After this, there was a trail of SQL related errors that both AOS(es) trapped and bubbled up to the UI. This happened on both AOS(es) not just one. I tried, to run the following.: DimensionCache::clearAllScopes(); in a job. This had zero affect.

To get past this fast, a restart of both AOS instances was completed, that resulted in the resolution of this issue. I would like to hope that maybe there is a Cache call that could take place that would fix this issue, without having to restart the AOS. However, for now, if you see this, the fastest resolution is a restart of *ALL* AOS(es) within a given instance of AX.

If I get an update on this, for what fixes this, if a hotfix comes out, or if there is a piece of X++ cache clearing code that can be executed, I will make sure and update this post as such.

Hopefully this will help someone out.

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , , , , ,

Copyright 2005-2011, J. Brandon George - All rights Reserved