As a web developer, it's clear to see that a number of things about the MCFC online ticketing system are flawed. The first is that it's a completely separate, seemingly outsourced entity, pointing at It'd be much better if they ditched the outsourcing contract and brought it in house.


  • Friends and family: show their loyalty points
  • Purchase history: 5 items per page? Come on! Increase the pagination limits and add an option to export the data to csv.
  • Fix the asp error when you select a promotion; stack trace is included at the bottom of this post.
Consistency over the display of information:
  • At present, the ticket news becomes scattered when there are updates. The scattered updates become misleading as often the original ticket news post is the one linked to from the fixtures page.
  • Alter the way ticket news is posted: Have one post per game and update that post instead of posting new ones. Display the information in a consistent format. Extend the current CMS to provide this functionality if needs be.
Cup games direct scheme:
  • There is no info as to what this actually is anywhere.
  • Search results: 1484 results for cup games direct -> this is mostly unrelated to the scheme itself, the fuzzy search has probably picked up on the cup keyword separately from the phrase as a whole, rendering search impossible.
Link all the systems together:
  • Clearly there's no manual counting of remaining tickets and there will be some automation that indicates when a game has sold out. Have that trigger a callback which updates the ticket news posts automatically.
  • The same goes for loyalty points. It'd be very easy to automate the process, so that when we enter a new loyalty points ticket sales window for a particular game the relevant row of information can be highlighted on the ticket news page.
Mobile marketing:
  • I'm not sure how effective it is at the moment. But building on the previous paragraph about linking up of systems it is possible to create customized text message alerts to supporters based on their circumstances.
  • This way, instead of receiving a default SMS telling you when tickets go on sale, you receive a customized SMS telling you when they go on sale to you personally, based on your account level and number of loyalty points.
  • A second SMS could be sent <the day/two days> before tickets go on sale, as a customized reminder.
  • ROI: it is possible, but it may not be financially worthwhile. If a game is going to sell out anyway a customized reminder makes no difference to the bottom line.
Loyalty points rankings:
  • Very simple. Add a ranking so I know that with ~4000 points I am ranked #5000 of #35000.
  • This doesn't stop foolish people from booking cup final hotels in Dublin.
  • It does at least give you an indication of whether you're likely to get a ticket for a particular big game.
Loyalty points reform:
  • This doesn't really relate to the online system as such, but there's a clear problem here and I don't know the answer.
  • You gain more points every year if you go to matches, but the number of points you need to get tickets for the games goes up as well.
  • This way, you make up no ground at all in relative terms, or if you do the gain is very slight.
  • I'm not sure if there's a better way of doing it though.
Oh and here's the ASP cock up:

Server Error in '/' Application.

Conversion from type 'DBNull' to type 'String' is not valid.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidCastException: Conversion from type 'DBNull' to type 'String' is not valid.

Source Error:


Line 634:                        desc.Text = rw("Description1") & "<br/>" & rw("Description2")
Line 635:                        comp.Text = rw("CompetitionDescription")
Line 636:                        startDate.Text = rw("StartDate")
Line 637:                        endDate.Text = rw("EndDate")
Line 638:                        max.Text = rw("MaxPerPromotion")
Source File: C:\TalentEBusinessSuite\ManCity\Live\TalentEBusiness\UserControls\OrderEnquiry2.ascx.vb Line: 636

Stack Trace:


[InvalidCastException: Conversion from type 'DBNull' to type 'String' is not valid.]
   Microsoft.VisualBasic.CompilerServices.Conversions.ToString(Object Value) +453096
   UserControls_OrderEnquiry2.promoDDL_SelectedIndexChanged(Object sender, EventArgs e) in C:\TalentEBusinessSuite\ManCity\Live\TalentEBusiness\UserControls\OrderEnquiry2.ascx.vb:636
   System.Web.UI.WebControls.ListControl.OnSelectedIndexChanged(EventArgs e) +111
   System.Web.UI.WebControls.DropDownList.RaisePostDataChangedEvent() +134
   System.Web.UI.WebControls.DropDownList.System.Web.UI.IPostBackDataHandler.RaisePostDataChangedEvent() +10
   System.Web.UI.Page.RaiseChangedEvents() +165
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1485

Version Information: Microsoft .NET Framework Version:2.0.50727.3615; ASP.NET Version:2.0.50727.3614