Tuesday, 2 December 2008

NAV 2009 Released

NAV 2009 has been released in the 'wave 1' counties.  This means some things that we have been waiting for a couple of years for are finally available.

There are still some gaps and the new client will take some getting used to but the addition of web-services out of the box and the new architecture is a great leap forwards.

I have posted before about web-services and since then I have been trying a few different things. In one demo from Microsoft they showed an example of them by adding a 'E#dit in Excel' button to a page that launched Excel, pushed the currently filtered data over and then allowed a user to modify it and update back into NAV.

Another interesting example has been posted by Dave 'Gaspode' Roys. In his example he is using an infopath form to get NAV data, edit it and submit it back to the system. Take a look here.

I am also trying a few things using the new client as well. Generally I 'learn' better when I have a project that needs a solution, fortunately I have a pet NAV project to play with. In our office we have a snack club that I current run, while its overkill really I keep track of it all in NAV. This gives me a chance to try to solve the minor problems that come along, and play with the new cool stuff.

This weeks project was a migration from NAV5.0 to NAV2009. As the basis of the system was fairly standard this was a straight forward exercise, adding a few new fields to tables and the doing a NAV backup and restore to a W2k8 server with SQL2k8 and NAV2009. Then I went through and rebuilt the few special bits of code that I needed.

Next up will be the addition of some RS reports and a simple app that the team can use to record what they are taking and set up their bills, a task that is currently done in a book. Once I have it figured out I'll post some examples.

Tuesday, 7 October 2008

Webservices in NAV2009

Anyone that has been reading up on NAV2009 cannot have failed to have noticed that NAV can now publish Webservices. I know clever developers have been building Webservices for NAV for a while now, but they have been building them from scratch. NAV2009 gives a simple form where you can expose a Codeunit, or a Page(the new object type used by the .NET client).
One of the examples in the Application Developers Guide publishes a Page built against the Customer Table. The example then goes on to build a simple console app that inserts, Modifies and deletes a customer record, displaying the results between each stage.
Now I know very little C# and the example has a number of bugs in it but even I have managed to get this work and add some very basic error catching in a few hours. One of the devs here told me it would have taken him somewhere between a day and 2 days top achieve the same in the past.

So the example I am talking about.
In NAV open Object Designer and run form 810
Add Page 21 and call it Customer

In Visual Studio 2008 I started a ConsoleApp Project.
I then added a reference to the WebService by Right Clicking Service References and selecting Add Service Reference. I then Clicked the Advanced Button

I then clicked Add Web Reference

I then add the webservice and named it WebService(not very original I know)

Once I had this I could start with the C# Code. Admittedly most of this was copy -  pasted from the example. But as I said there are a few bugs that I had to resolve, plus I wanted some simple error trapping
   1: using System;








   2: using System.Collections.Generic;








   3: using System.Text;








   4:  








   5: namespace ConsoleApplication1








   6: {








   7:    // import newly generated Web service proxy








   8:    using WebService;








   9:   








  10:    class Program








  11:    {








  12:        static void Main(string[] args)








  13:        {








  14:            //create instance of service and setting credentials








  15:            Customer_Service service = new Customer_Service();








  16:            service.UseDefaultCredentials = true;








  17:  








  18:            //create instance of customer








  19:            Customer cust = new Customer();








  20:            cust.Name = "Customer Name";








  21:            //Next line will throw an error. Comment out to get successful passing








  22:            cust.Address = "12345678901234567890123456789012345678901234567890123456";








  23:            Msg("Pre Insert");








  24:            PrintCustomer(cust);








  25:           








  26:            //insert customer








  27:            //service.Insert is wrong. Correct and added a Try/Catch for errors








  28:            //service.Insert(ref cust);








  29:            try








  30:            {








  31:                service.Create(ref cust);








  32:            }








  33:            catch (Exception ex)








  34:            {








  35:                Console.WriteLine(ex.Message);








  36:            }








  37:            Msg("Post Insert");








  38:            PrintCustomer(cust);








  39:  








  40:            //create filter for searching for customers








  41:            List<Customer_Filter> filter = new List<Customer_Filter>();








  42:            Customer_Filter nameFilter = new Customer_Filter();








  43:            nameFilter.Field = Customer_Fields.Name;








  44:            nameFilter.Criteria = "C*";








  45:            filter.Add(nameFilter);








  46:  








  47:            Msg("List before modification");








  48:            PrintCustomerList(service, filter);








  49:  








  50:            cust.Name = cust.Name + "Modified";








  51:            //service.Modify is wrong. Correct and added a Try/Catch for errors








  52:            //service.Modify(ref cust);








  53:            try








  54:            {








  55:                service.Update(ref cust);








  56:            }








  57:            catch (Exception ex)








  58:            {








  59:                Console.WriteLine(ex.Message);








  60:            }








  61:  








  62:  








  63:            Msg("Post Modify");








  64:            PrintCustomer(cust);








  65:  








  66:            Msg("List after modification");








  67:            PrintCustomerList(service, filter);








  68:            try








  69:            {








  70:                service.Delete(cust.Key);








  71:            }








  72:            catch (Exception ex)








  73:            {








  74:                Console.WriteLine(ex.Message);








  75:            }








  76:  








  77:  








  78:            Msg("List after deletion");








  79:            PrintCustomerList(service, filter);








  80:  








  81:            Msg("Press [ENTER] to exit program!");








  82:            Console.ReadLine();








  83:        }








  84:  








  85:        static void PrintCustomerList(Customer_Service service, List<Customer_Filter> filter)








  86:        {








  87:            Msg("Printing Customer List");








  88:  








  89:            //conduct the actual search








  90:            //service.Find is wrong. Correct and added a Try/Catch for errors








  91:            //Customer[] list = service.Find(filter.ToArray(), null, 100);








  92:            Customer[] list = service.ReadMultiple(filter.ToArray(), null, 100);








  93:           








  94:            foreach (Customer c in list)








  95:            {








  96:                PrintCustomer(c);








  97:            }








  98:            Msg("End of List");








  99:        }








 100:  








 101:        static void PrintCustomer(Customer c)








 102:        {








 103:            Console.WriteLine("No: {0} Name: {1}", c.No, c.Name);








 104:        }








 105:  








 106:        static void Msg(string msg)








 107:        {








 108:            Console.WriteLine(msg);








 109:        }








 110:    }








 111: }








 112:  
















This is an area I think will make my life a lot easier as I get involved in integration projects fairly often. 








As I get more knowledge I'll post up more examples.

Monday, 6 October 2008

Intergen is the MS NZ Partner of the Year 2008

Year year Microsoft partners get various awards. Most of these are based on submissions. Partners enter into the various categories and are the submissions are then judged by Microsoft.

Partner of the Year is different. Microsoft employees look at the partners and selects those that they feel are suitable. These are then judged.

For Intergen this is a huge honour and, coupled with being announced as a member of the Presidents Club, firmly establishes us as the leading Microsoft Partner in NZ.

To see all the categories and winners for this years Microsoft awards take a look at the MS Site here.

Vista Gadgets

I have been using Vista for almost a year now and one of the things I like in it is the Sidebar. When I was on XP I used desktop gadgets from a third party so when I finally got Vista I did some digging around its sidebar. While there are a number of cool gadgets two of the most useful I have found are the App Launcher and the Magic Folder.
App Launcher allows a user to set up shortcut's to what ever they like and they can be grouped into folders. While a number of standard windows folders can be accessed, for example My Computer, one of the things that is missing is links to the user folders such as Documents by default. 


















The other gadget I have found really useful is the Magic Folder. I often save all sorts of things to my desktop over the course of a day. Magic Folder allows me to drag and drop them onto the folder which then files them away based on the file extension. So any pictures are moved the the My Pictures folder, pdf's move to a folder inside My Documents, etc. You can specify your own file extensions and you can move to anywhere on your system.
If you find you regularly have masses of files on your desktop and you can store them loosely by file extension it is well worth looking into.

Dynamics NAV MVP

I am pleased to say that the newest MVP for Dynamics NAV is Dave Roys.

Why am I so pleased that Dave has been recognised? well for the past four and a half years I have been working along side him. Dave is based out of Intergen's Christchurch office. Prioir to his move to New Zealand he had been working for a UK partner while I was with, at that time, Navision UK Ltd, and he was a student on one or two of the courses I ran back then. So in a ,very small, way I help contribute to his passion for NAV, well I hope anyway lol.

If you haven't already read his blog I advise you to do so.

Wednesday, 17 September 2008

RPO Released

What is the RPO?

The RPO (Runtime Page Optimizer) speeds up ASP.NET and SharePoint websites. Its simple. We automated 8 of the guidelines set out in Yahoo's "Best practices for speeding up your site" and checked these with the creators of YSlow to make sure the RPO gives you the fastest website ever. Try the RPO now from www.getrpo.com.

Technical background

The RPO (Runtime Page Optimizer) is a software component for IIS 6/7 web servers  that speeds up ASP.NET and SharePoint websites significantly.  The component works at runtime - with no development changes, no extra hardware and performs these optimizations:

  • Combination. Combines JS files, CSS files reducing HTTP requests. It can optionally  combine JPEGs and GIFs into CSS sprites to reduce the number of images.  This significantly decreases the roundtrips between browser and server reducing page load time
  • Compression. Minifies and gzip compresses resources, decreasing page load times and data traffic
  • Caching. Increases speed through caching - automatically setting far future expires on the browser, caching optimized resources on the server, with full control over when both caches are refreshed
  • Browser aware. Works with all versions of IE, FF, Opera, Chrome and Safari - optimizations are automatically turned on/off to meet the browser's capability
  • Framework support. Supports ASP.NET 2.0+, AJAX, SharePoint 2007, DotNetNuke, EPiServer
  • Fast set up. No extra hardware required,  no CDN maintenance, no browser software, zero impact installation - component is a single DLL installed on a web server
  • You decide how fast your pages load. Out-of-the-box the RPO will speed up websites at level-4 optimization. For even greater speed, you can use the RPO to sprite images and combine all JavaScripts into one, you'll just need to ensure your images are correctly scaled and your JavaScripts behave well when combined. This level of optimization usually takes a "milestone" to complete, the RPO reduces the developer  effort to hours and keeps your images and scripts in their original maintainable format

Do you need it?

Speed is everything. Unless you've implemented best practices, the website that seems fast on your local machine is often slooooooow when people use it from around the country or internationally. Users hate slooooooow webpages. Asking your customers to wait is like asking them to leave. Try the RPO now from www.getrpo.com.

Tuesday, 2 September 2008

Microsoft Dynamics NAV compatibility with Windows Server 2008 and SQL Server 2008

 

Microsoft Dynamics NAV 4.00 SP3 and 5.00 SP1 are compatible with Microsoft Windows Server 2008. The only updates to take into account only applies to customers with Business Notification and/or Commerce Gateway functionality. You can find more info in KB article 956161.

Compatibility with SQL Server 2008 is still in test. Just check this site for an update on the test results... . I will (try to) keep you informed as well, off course.

Thursday, 24 July 2008

Intergen in top 5% of Microsoft Dynamics Partners

Posted From Scoop

Intergen has been honoured with membership of the 2008 Microsoft Dynamics President’s Club which consists of the top 5% of Microsoft Dynamics partners worldwide.

Intergen received this top recognition from Microsoft during the Microsoft Worldwide Partner Conference 2008 in Houston, Texas. The honour reflects Intergen’s dedication to meeting their clients’ needs.

“Microsoft is proud to congratulate Intergen on being named to this year’s Microsoft Dynamics President’s Club,” said Doug Kennedy, vice president, Microsoft Dynamics Partners. “Intergen not only has demonstrated a high level of product expertise, but also has provided a superior level of service and commitment to our Microsoft Dynamics customers, ultimately contributing to the overall success of Microsoft Dynamics and companies worldwide.”

Intergen is New Zealand's most experienced provider of Microsoft based business solutions. The company works closely with Microsoft to ensure it has the best possible understanding of their technologies so it can provide the best solution for clients.

Tony Stewart, Intergen’s Managing Director, said the award was a wonderful recognition. “It’s a fantastic result and one that is due to the efforts of the entire Intergen team. We’re always asking ourselves how we can work better for our clients and we’re delighted to be rewarded for our efforts.”

The team atmosphere is a key reason for Intergen’s success. In the Unlimited/JRA Best Places to Work in New Zealand Survey for 2007 Intergen was listed as the sixth best place to work in the ‘Medium-Large Workplaces’ category.

Intergen is also a Microsoft Gold Certified Partner which recognises the company as an ‘elite business partner’ in working with Microsoft products.

Thursday, 13 March 2008

Dynamics Entrepreneur Solution

Microsoft recently released a 'new' product in the Dynamics space. Dynamics Entrepreneur Solution. I say 'new' as in reality it is Dynamics NAV with a rebuilt GUI.
They have taken away all but the basics that a small business would need. Pretty much all that's left is simple G/L, Sales and Marketing, Purchasing, Inventory and Resources.
All the other functionality is still hidden away behind the scenes. The intention being that when a customer is of a sufficient size to need those extra bits 'migrating' them to a full blown NAV is just a case of modifying the forms and adding to the menus.
The new forms are very nice. They present the information is a user friendly manor and make it easy for a user to see related information. Where in NAV you would be going to menus to get at related information e.g. Cross References for a customer. as you can see in the screen shots in NAV you would open the customer and find the one you wanted. Then click the Customer Menu. Then Open the Cross References
















In Entrepreneur Solution you open the Customers screen. This gives you a list of all customers with some easy filter controls.


By clicking the blue arrow next to the customer you want you get that customers card and in the tabs at the bottom of the card you can select the cross references.



I kind of like this layout. When I was working for MBS I had a fair amount of exposure to Axapta, now Dynamics AX, and some of the screens in the new Entrepreneur Solution have a similar initial look and feel without the dozens of menus to actually make things happen. I can see some of the new screens being popular with larger NAV sites as well as the customers that Entrepreneur is aimed at.
I think it will be very interesting to see how Entrepreneur takes off in the market place.

Monday, 25 February 2008

Dynamics CRM integration to Dynamics NAV

 
One of the projects I am currently working on involves managing appointment bookings, tracking activities and making sales to a large customer base.
 
All of these things are easily achieved in any decent CRM product and being a Microsoft Gold Partner we naturally are using MS CRM. Fortunately for this project MS CRM 4.0 had just been released as we went into the development phase so we took all our CRM 3.0 knowledge and started applying it to CRM 4.0, as well as picking up on all the new cool stuff that we can now do.
 
There is also a big requirement on replacing the financial systems for this client as their current system no longer does what is needed. For us this means using Dynamics NAV 5.0 deployed at a head office level.
 
The tricky part of the solution is allowing the devolved users that will live predominately in CRM to record their information and have it feed the NAV system. To do this we needed fairly extensive integration between the two products, something that isn't available 'out of the box'. In the past we have done this sort of project and manually built the integration points, but they were fairly minor, simple things. This solution requires much more complex integration points.
After search around we settled on the Celenia Connector. The latest version of this allows us to wire together all the parts of the two systems and it lets us build configurable workflows in the connections.
 
This has allowed us to deploy portions of the financial system to users that will never actually have to access the NAV Client. As CRM is web deployable this also minimises the software footprint on individual machines, something that is desirable as all 'managed' desktops at this client are deployed via Citrix.