Monday, June 22, 2009 #

Bye Bye System.Data.OracleClient

In these days Microsoft is making too much decisions that I can’t understand…

By checking my feed reader, today I’ve discovered this news directly from the ADO.NET Team Blog: System.Data.OracleClient will be deprecated from the next .NET Framework releases.

Wow… the native support for Oracle database in .NET will be discontinued… and the reasons? This:

We learned  that a significantly large portion of customers use our partners’  ADO.NET providers for Oracle;  with regularly updated support for Oracle releases and new features. In addition, many of the third party providers are able to consistently provide the same level of quality and support that customers have come to expect from Microsoft. This is strong testament of our partners support for our technologies and the strength of our partner ecosystem.  It is our assessment that even if we made significant investments in ADO.Net OracleClient to bring it at parity with our partners based providers, customers would not have a compelling reason to switch to ADO.Net OracleClient.

No… I can’t agree… We’ve lots of different types of applications that actually works with System.Data.OracleClient and I think that it has lots of big points of favour:

  • You have it natively into the .NET Framework
  • It’s really very stable and full feature.
  • No needs to deploy it

Why now we’ve to drop it from our solutions and going to third party features? Why we’ve to pay for something that an enterprise framework like .NET must have?

In the past we’ve also evaluated other providers for Oracle but our decision was always to use OracleClient. And now?

I don’t know who are the sources of this ADO.NET Team survey, but you can’t say us that the mai part of Oracle developers works without OracleClient. I hope on a miracle to change this road…

Technorati Tag:

posted @ Monday, June 22, 2009 2:38 PM | Feedback (0)

Friday, June 19, 2009 #

MCP Certifications are “going green”: the last error!

I’ve received today the last MCP Flash email and the first paragraph say this:

GoingGreen

I don’t know who is the Team involved on deciding the right direction for Microsoft Certifications, but sometimes there are errors that are really unbelievable…

From July 1, 2009, if you’ll obtain a Microsoft Certification and you want a paper certificate, you’ve to pay for having it! Certifications will be available for free only in digital format.

I think this is a wrong decision for these main reasons:

  1. A digital certificate has no value. Can you present an MCP certificate printed on an A4 paper to someone? Are you credible? I think it could seem like a good work on Photoshop… :)
  2. Actually Microsoft certifications has no a low cost. Now we’ve to pay also for having a certificate? If you don’t want to send paper certificate for free, cut the exam cost to the half!
  3. Someone has thinked about shipping and handling fee? If you’re in USA, maybe with few dollars you’re ok… but if you live outside USA? Shipping and handling fees could be too high.

This decision seems to me (but maybe not only to me) not like a “Going Green” direction, but maybe like a “Going Cheaper” one (and this helps to reduce the value and the popularity of these types of certifications I think).

No… for me this is not the right direction!!

posted @ Friday, June 19, 2009 9:24 AM | Feedback (1)

Thursday, June 18, 2009 #

WF 4.0 Designer Rehosting: we’ve see the light!!

How many times I’ve written about Workflow Designer Rehosting feature inside Windows Workflow Foundation? Too many times I think…

If you’ve done projects with WF 3.5 and you’ve tryed to make in production the Designer Rehosting feature, you can understand what I mean: in WF 3.5 hosting the Workflow Designer inside an application (a WPF application for example) is too hard, not so flexible and not so intuitive for the end user.

I’ve received many answer from the WF Dev Team in the past about this topic and they said me that the things will change with the new WF 4.0 platform. And now?

This is the first answer

When I’ve read this post, I was so excited… finally we can host the Designer with few lines of code and it seems more intuitive for the end user. I love the new WorkflowDesigner.Load method, were we can pass the entire WF graph to load (and it could come also from XAML or DB).

Interesting to see what will be possible when editing the loaded workflow now… if it will be easy and intuitive for the end user, this could really be a killer application!!

Technorati Tag: ,

posted @ Thursday, June 18, 2009 9:13 AM | Feedback (0)

Thursday, June 11, 2009 #

Tuning Dynamics NAV to the max: GROUP BY and DISTINCT

I know that this is not the first time that I write about this topic, but you can think at this as a “personal mission”: I want GROUP BY and DISTINCT on C/AL!!

If you’re a NAV developer and you know a bit of SQL, you can understand that a big lack on C/AL is the possibility to make a GROUP BY and DISTINCT query in an “atomic manner”. Let’s see a simple example (but that comes from a real case):

You’ve a table with data like these:

NAV_Distinct1

and you need to perform these tasks:

  1. group these data by the field called “Cod. Centro”
  2. calculate the sum of “Importo” for every “Cod. Centro”
  3. display the results on a form (“Cod. Centro” must be distinct and “Importo” must be the total).

If you work directly via T-SQL, you can perform this task simply with this query:

select distinct [Cod_ Centro], sum(Importo) as Total
from
[NAV$Mov_ Vis_ Analisi CoAn]
where [Codice Visualizzaz_ Analisi]='DRG'
group by [Cod_ Centro]

and you’ll obtain the result as follow:

NAV_Distinct2

If you work directly with NAV and C/AL, you’ve to write something like these:

//Raggruppo anche per VOCE
IF MovAnalisi.FINDSET(FALSE,FALSE) THEN
REPEAT
BEGIN
  IF MovAnalisi.MARK=FALSE THEN
  BEGIN
    //Save the primary key of the record that I want to summarize
    NumMov:=MovAnalisi.Nr;

    MovAnalisi2.COPYFILTERS(MovAnalisi);
    MovAnalisi2.SETRANGE("Dim. Voce",MovAnalisi."Dim. Voce");
    MovAnalisi2.SETRANGE("Val. Dim. Voce",MovAnalisi."Val. Dim. Voce");
    TotQta:=0;
    TotImporto:=0;
    IF MovAnalisi2.FINDSET THEN
    REPEAT
    BEGIN
      TotQta+=MovAnalisi2.Quantità;
      TotImporto+=MovAnalisi2.Importo;
      //Mark the record
      IF MovAnalisi.GET(MovAnalisi2.Nr) THEN
        MovAnalisi.MARK(TRUE);
    END
    UNTIL MovAnalisi2.NEXT=0;

    //Here you can write the summarized record

    //Re-position to the original record
    MovAnalisi.GET(NumMov);

END
UNTIL MovAnalisi.NEXT=0;

As you can see, you need two references to the same table, you need to mark the record to summarize etc. This is not the best in terms of performances…

I don’t think that is so impossible to add to C/AL something like RECORD.RETRIEVEDISTINCT(FieldName) or RECORD.GROUPBY(FieldName).

These are common operations on a production environment and they’re also many times a bottleneck in terms of performances (expecially if you work with big amount of data). Personally, I’ve to use ADO inside NAV in order to increase performances for these types of operations.

But why is so impossible to have them natively implemented on C/AL??? Help me on this mission… I want DISTINCT and GROUP BY on Rec!! :)

Technorati Tag:

posted @ Thursday, June 11, 2009 3:26 PM | Feedback (2)

Monday, June 08, 2009 #

Microsoft Dynamics NAV 2009 SP1: .NET controls integration is here!!

Having the possibility to integrate a .NET control into the NAV client is a feature that many NAV developer are asking always more. I’ve written in the past lots of posts about this and I’ve always signalled to the NAV Team that this is also one of the main requests that I receive from NAV customers.

What’s the “state of the art” about this topic? After the official release of the NAV Statement of Direction document, now we can make our customers more happy: with NAV 2009 SP1 you’ll have the possibility to integrate a .NET control directly into a NAV form (RoleTailored Client only…).

How to achieve this? Since the new NAV architecture is .NET oriented, simply you have to create your user control with Visual Studio, add a reference to a new NAV DLL located to C:\Program Files\Microsoft Dynamics NAV\60\RoleTailored Client\Microsoft.Dynamics.Framework.UI.Extensibility.dll and register your .NET control on the NAV client.

Freddy Kristiansen has published an interesting post here with all the steps you need…

I know the next customer’s question now: what about the Classic Client? The Classic Client doesn’t natively support this feature But do you think that the Classic Client will have a long life?

Technorati Tag:

posted @ Monday, June 08, 2009 9:10 AM | Feedback (0)

Friday, May 29, 2009 #

Windows Workflow 4.0: quick Activity reference

The .NET Endpoint Team has published an interesting post where they give a brief description on all the new activities that ships with the WF 4.0 Beta 1 platform. I recommend to all that works with WF 4.0 to check it… a quick and easy way to understand all the new engine I think.

This is the main content of the summary (cross posted here for don’t loose it):

Activities are the unit of work in a workflow program. Activities in WF4 have a signature and body. The signature of an activity is defined in terms of its public arguments. These public arguments define the data flow into and out of an activity. The body of an activity is a chunk of execution logic that may execute over multiple pulses of work. This logic can be expressed declaratively in terms of other activities or with imperative code.

Procedural

Procedural activities provide a mechanism to model sequential control flow using concepts you know from standard procedural languages like C# or VB like if, assign, while, etc. Procedural activities include the basic building blocks to represent sequential behavior, including control of flow, method invocation on CLR objects, collection manipulation, and error handling. It also covers advanced scenarios like parallel activities, transaction management, compensation, cancellation, and persistence. The table below contains all the activities in the procedural category. The words in bold in the description of each activity represent its most important arguments.

Activity

Description

Designer

Collection Management

AddToCollection<T>

Adds an Item to a Collection.

clip_image001

RemoveFromCollection<T>

Removes an Item from a Collection.

clip_image002

ClearCollection<T>

Clears a Collection, removing all items stored in it.

clip_image003

ExistsInCollection

Verifies if an Item exists in a Collection. If the item exists, its Result argument will yield True.

clip_image004

Control of Flow

If

The If activity selects a child activity for execution based on the value of a Boolean expression.

If the Boolean expression Condition yields True (and “Then” activity is configured), the “Then” activity is scheduled. If the expressions yields False (and “Else” activity is set), the “Else” expression is scheduled.

image

DoWhile

Executes its Body until the Condition evaluates to True. The Body will be executed at least once.

clip_image008

ForEach / ForEach<T>

ForEach activity contains a list of Values and a Body. At runtime, the list is iterated and the body is executed for each value in the list.

clip_image010

Pick

The Pick Activity provides event-based control flow modeling in WF. The only valid children for a Pick activity are PickBranches.

At the beginning of a Pick execution, all the Trigger activities from all its Branches are scheduled. When the first Trigger completes its corresponding Action activity is scheduled, and all other Trigger activities are canceled.

clip_image011

PickBranch

PickBranch represents a branch in a Pick. It consists of a Trigger and Action. PickBranch can only be added to a Pick activity.

clip_image013

Sequence

The Sequence activity allows for the execution of one or more Activities in order.

clip_image014

Switch<T>

Switch activity is similar to switch statement in C#. It contains an Expression and a set of Cases (each case has a key and an activity). After the expression is evaluated, the Switch activity looks for a Case with a key that matches the result of the expression and if found, it schedules the activity associated with that Case.

clip_image016

While

The While activity executes it's Body while a Boolean Condition is True.

clip_image018

Parallel Execution

Parallel

Parallel activity allows parallel execution of its children. It operates by scheduling each WorkflowElement in its Branches collection at the beginning of its execution.  It completes when all of its Branches complete or when its CompletionCondition property evaluates to true.

clip_image019

ParallelForEach /  ParallelForEach<T>

The ParallelForEach activity enumerates the elements of a collection(Values) and executes an Activity for each element of the collection, in a similar way than the ForEach activity does. The main difference is that the embedded statement is executed in a parallel fashion.

Just like the Parallel Activity, ParallelForEach has a CompletionCondition, so that the ParallelForEach activity could complete early if the evaluation of the CompletionCondition returns true. The CompletionCondition is evaluated after each iteration is completed.

clip_image021

Error Handling

TryCatch

TryCatch activity is similar to the try..catch construct in C#: all activities in the Try block are executed and if an exception occurs, it will schedule the Catch block that best matches that exception (if no matching catch is found, the workflow is aborted). All Catch blocks are contained in a collection called Catches.

TryCatch activity also has a Finally block that is executed after the Try (and any eventual Catch).

A note on unhandled exceptions:

TryCatch provides exception handling at the workflow level. When an unhandled exception is thrown, the workflow is aborted and therefore the Finally block won’t be executed. This behavior is consistent with C#.

clip_image023

Catch<T>

Represents one catch block to be used in a TryCatch activity. If an exception is thrown within a Try Element, the TryCatch will attempt to find a matching Catch element based on the type of the thrown exception.

Catch<T> can only be used inside a TryCatch activity

clip_image025

Throw

Throw activity throws an exception within a workflow. Throw activity has an Exception property that contains the exception that will be thrown at execution time.

clip_image026

Utilities

Assign

The Assign activity assigns the value of its Value argument to its To argument.

The types of both arguments must be compatible. This compatibility is verified at runtime.

clip_image027

Delay

Delay Activity, as its name suggests, will block the current workflow execution path for a Duration specified by user. After the duration expires, the workflow continues execution as expected. The duration of the delay is set using a TimeSpan.

clip_image028

InvokeMethod / InvokeMethod<T>

InvokeMethod is the activity that allows you to call an existing CLR instance or static method. To invoke a method all you need to do is provide the owner of the method (TargetType for static methods, TargetObject for instance methods), the MethodName, and its Parameters.

InvokeMethod supports the following method invocation scenarios:

· Public instance and static methods

· Parameter passing by value and by reference

· Support for parameter arrays

· Support for generic parameters

· Asynchronous method invocation

clip_image029

WriteLine

Writes text to the configured output console.

Writing beyond the System.Console

WriteLine has a TextWriter argument can be configured to write to different outputs. For example, we can configure the TextWriter property to send the text to an ASP.NET page. If the TextWriter is not set, it will be set by default to the System Console.

clip_image030

Advanced (Cancellation, Compensation, Transactions, and Persistence)

CancellationScope

The CancellationScope activity consists of two main parts, the Body and the CancelHandler. The body is the code path that normally executes. If the activity gets canceled, then the cancel handler is called.

clip_image032

CompensatableActivity

CompensableActivity is used to define a potentially long running activity with accompanying Compensation and Confirmation logic.

Compensation allows the user to specify corrective action to be taken on an activity based upon activity which occurs after the successful completion of the Body of the activity.

clip_image033

Compensate

Compensate is used to explicitly invoke the compensation handler of a CompensableActivity.

clip_image034

Confirm

Confirm is used to explicitly invoke the confirmation handler of a CompensableActivity.

clip_image035

Persist

Persists the workflow instance. Persistence will be done using the configuration of the WorkflowInstance that is being executed (this activity doesn’t have any arguments).

clip_image036

TransactionScopeActivity

The TransactionScopeActivity provides the mechanism for initializing a new transaction, making the transaction handle ambient (a workflow execution property) and calling complete on the transaction once the Body of the TransactionScope activity has completed.

TransactionScopeActivity supports “Requires” semantics. If there is already an ambient transaction it is used, else a new one is created.

Nested transaction scopes:

TransactionScopeActivity can be nested in another TransactionScopeActivity. A TransactionScopeActivity nested in another TransactionScopeActivity will use the existing transaction.

clip_image037

Flowchart

Flowchart is a new modeling style that we have introduced in WF4. Flowchart is a well known and intuitive paradigm to visually represent business processes. Business Analysts, Architects and Developers use often flowcharts as common language to express processes. 

Flowchart is a very powerful construct since it provides the simplicity of sequence plus the ability of looping back to a previous point of execution. All this is conveyed using a very well known conceptual paradigm that is common across several disciplines beyond computer science!

Activity

Description

Designer

Flowchart

This is the root for a Flowchart. Since Flowchart is an activity like any other, it can be composed inside any container activity.

For example, we can add a Flowchart inside of a Sequence or a Flowchart inside another Flowchart.

The green ball in the image at the right represents the start node of the Flowchart.

image 

FlowDecision

FlowDecision models conditional forks within a Flowchart. It can be seen as the equivalent of the procedural If activity in the Flowchart world.

This activity contains a Boolean expression Condition. If the expression evaluates to “True”, the true path is executed (otherwise, the false path is scheduled).

image

FlowSwitch

FlowSwitch activity selects a next node depending on the value of an expression. FlowSwitch can be seen as the equivalent of the procedural Switch activity in the Flowchart world.

image

Messaging

The WF4 Messaging Activities are designed to support message-oriented workflows and provide better integration of messaging into workflows. They enable workflows to send data out to other systems and receive data from other systems. These activities can be composed together and along with correlation can model many complex Message Exchange Patterns.

Activity

Description

Designer

Receive

Models one way receive of a message. It can receive data of the following types: Message, DataContract types, XmlSerializable types, and MessageContracts.

clip_image041

ReceiveAndSendReply

This activity template represents a correlated Receive activity and SendReply activity.

By using this template you can wait for an incoming message and then send a reply to the sender.

Since the Receive and the SendReply are inside a sequence, you can add any activity between them.

clip_image042

Send

Models one way send of a message. It can receive data of the following types: Message, DataContract types, XmlSerializable types, and MessageContracts.

This activity can be used in two ways:

1. Client: this activity can be used to send a request to a service. This is equivalent to a WCF client calling a service operation. No contract inference is performed on the client side.

2. On the server side the Send activity can be used to send a reply to a previous Receive. In this case the Send and Receive activities must have the same OperationName, Action and CorrelationHandle.

clip_image043

SendAndReceiveReply

This activity template represents a correlated Send activity and ReceiveReply activity.

By using this template you can send a message and then wait for a reply from the destination.

Since the Send and the ReceiveReply activities are inside a sequence, you can add any activity between them.

clip_image044

PowerShell

PowerShell activities, as their name imply, allow invoking PowerShell cmdlets (commandlets) and scripts from WF programs.

Please note that while these activities are included by default in the Beta1 toolbox, they will not be available in the final RTM bits when we release. This is because .NET Framework does not allow taking a dependency on a technology that does not ship in the framework. We're working on a longer term strategy here since many customers have requested PowerShell activities. For RTM, you will find these activities in the SDK samples instead.

Activity

Description

Designer

InvokePowerShell

Invokes a PowerShell cmdlet that does not have a return value. InvokePowerShell can be used to invoke simple cmdlets and scripts. We can also pass parameters and input objects to the cmdlet. After execution, the activity provides a set of errors (if any occurred).

clip_image045

InvokePowerShell<T>

An activity that invokes and retrieves the resultant output from a PowerShell cmdlet. This flavor of the activity has all the same arguments than the non-generic version plus an InitializationAction.

The InitializationAction is used to map the results of the execution of the cmdlet to variables in our workflows.

clip_image046

Migration

WF 3.x and 4.0 can exist side by side, but you can also use WF 3.x activities in WF4 workflows using the Interop activity.

Activity

Description

Designer

Interop

The Interop activity is a WF4 activity that wraps a WF3 activity (a non-abstract CLR type that derives from System.Workflow.ComponentModel.Activity) thus allowing the WF3 activity to be used in WF4 workflows.  Note that the WF3 activity can be a single leaf activity, or an entire compiled workflow (tree of activities).

The Interop activity bridges the WF4 and WF3 activity execution models, facilitates data flow across the interop boundary, and enables persistence and tracking of WF3 activity instances within WF4 workflow instances.

The Interop activity allows WF developers to move to the WF4 model in an incremental fashion:

· Quickly experiment with WF4 using existing WF3 activity artifacts

· Wrap WF3 activities the developer isn’t ready to redesign on the WF4 model

· Wrap WF3 activities for which the developer doesn’t own or possess the source code (e.g. they purchased the activity from a third party)

clip_image047

Thanks a lot to the Team for this clear post… WF 4.0 is really really exciting…

Technorati Tag: ,

posted @ Friday, May 29, 2009 8:51 AM | Feedback (2)

Wednesday, May 27, 2009 #

Visual Studio 2010 Beta 1: so good!

I’m so surprised about the Visual Studio 2010 Beta 1 release: after some days of testing and after some project’s migrations on the new platform, the environment never crashed and the performances are really good.

VS2010Beta1

The new WPF environment is really cool and I love expecially the new WPF Designer (finally Intellisense in XAML) and the new Workflow engine (FlowChart workflows are really a great new thing!!). I hope that something more will be done on the new Workflow Designer and I’m waiting for news about the Workflow designer hosting capabilities.

Wonderful to see that all the environment is build around XAML and so it could be extended and customized with simplicity.

The VS team has done a great work and more will come on the next releases for sure…

Technorati Tag: ,

posted @ Wednesday, May 27, 2009 9:06 AM | Feedback (0)

Monday, May 18, 2009 #

Dynamics NAV bug on protecting Addon’s objects

If you’re a NAV ISV and you have developed an addon for Dynamics NAV, you’re quite sure that your rights on code are protected and your customer can’t open your objects or modify them (due to the object ID protection).

Unfortunately, this is not true… there’s a trick that permits to everyone to read the code of a protected object despite the license protection level. You can also edit and modify the addon objects and create your own.

Obviously I can’t describe how to unprotect an object here, but I’ve signalled this problem to Microsoft because I think this is a bug of the embedded Object Designer tool.

Technorati Tag:

posted @ Monday, May 18, 2009 11:41 AM | Feedback (0)

Saturday, May 02, 2009 #

Model-View-ViewModel Toolkit for Visual Studio 2008

I think that everyone involved on building complex WPF applications are exactly in my situation: we've spent lots of days architecturing the applications, choosing the right pattern (M-V-VM in this case) and training all the Dev Team on using it, organize the work with other developers involved on the project (we've figures that works mainly on the View, other that works on the Model and others that works on the ViewModel side) and now that the work is in an advanced state what happens?

In one of my "mainly monitored" section of Codeplex (WPF Futures) is released the first version of the WPF Model-View-ViewModel Toolkit.

The Model-View-ViewModel Toolkit is intended to introduce the Model-View-ViewModel design pattern for building WPF applications to the broad WPF developer community.
The toolkit includes:

  • A Visual Studio 2008 template (Visual C# Express 2008 also supported)
  • Documentation
    • General introduction to M-V-VM
    • Walkthrough using the VS template
  • A complete WPF application demonstrating the M-V-VM pattern

With just two click on VS2008 (new Project and choose WPF Model-View Application) you've the complete infrastructure of a WPF application.

If I had it many months ago...

Technorati Tag: ,

posted @ Saturday, May 02, 2009 3:37 PM | Feedback (0)

Friday, April 24, 2009 #

Using Dynamics NAV 4.x client on Vista x64

Yesterday we had a strange issue on using the Dynamics NAV 4.02 client on a Vista x64 operating system. After applying the trick on sqlsrv32.dll, the error was this:

NAV4XVista64

Surprise... the MDAC error is appeared again... seems that the dll was not hacked...

After a bit of research, I've discovered that on Vista x64 there are two folders:

c:\windows\system32 contains sqlsrv32.dll (64 bit)

c:\windows\sysWOW64 contains sqlsrv32.dll (32 bit)

In order to run NAV 4.x on Vista x64 you've to modify the sqlsrv32.dll on the sysWOW64 folder by applying it the trick.

Remember that this is unsupported by Microsoft

Technorati Tag:

posted @ Friday, April 24, 2009 3:10 PM | Feedback (0)

Monday, April 20, 2009 #

Microsoft Dynamics CRM 4.0 VPC (2009 Edition) out

If you're involved on Microsoft CRM demonstration activities, certainly you've a VPC ready to use. Preparing a good VPC environment (will all the features and "gadgets" installed) is not a simple step and it requires lots of time and resources.

Fortunately Microsoft help us and, starting from the CRM 3.0 release, they release a complete Virtual PC environment every n months.

Today the last release for CRM 4.0: the 2009 edition of the CRM 4.0 VPC.

What I think it's really interesting in this VPC image is the complete installation of all the CRM Accelerators actually available... a great way to demonstrate how you can extend Microsoft CRM and how you can integrate it with other applications.

Today we are releasing the 2009 edition of the Microsoft Dynamics CRM 4.0 VPC. This VPC enables you to demonstrate the features of Microsoft Dynamics CRM 4.0 using a single PC or laptop computer. This is just not simply a a VPC with only CRM installed, we’ve included all of the accelerators, dashboards, showing of document management capabilities, build out great demo scripts and much more!

image image

The CRM VPC is available to partners on Partner Source and it is also available on VM Express.

P.S. Remember the "bad side": The VPC is time bombed and will expire on August 12th, 2010.

Technorati Tag:

posted @ Monday, April 20, 2009 9:36 AM | Feedback (0)

Wednesday, April 08, 2009 #

XBAP also with CRM 4.0 now...

If you read my blog, maybe you know that I'm a fan of XBAPs (or XAML Browser Applications).

Today by reading a Microsoft Dynamics related blog, I've found the announce of an interesting add-in for CRM 4.0 (something that we've discussed in the past days at Microsoft with friends):

The Agent Communications Panel for Microsoft Dynamics CRM 4.0 works with Microsoft Dynamics CRM and Microsoft Office Communications Server 2007 R2, and enables agents to manage their communications (make calls, receive calls, conference, and chat) from their Microsoft Dynamics CRM system. 

The Agent Communications Panel embeds with CRM itself:

AgentPortal

Despite the application itself (really interesting I think), what attracts me is that the Agent Communications Panel is an XBAP, published to a Web server and opened from a Web browser.

Can you imagine how much you can do with XBAPs and CRM?

XBAP usage is not so widespread today, but it's really interesting to see that also big applications like Microsoft CRM 4.0 starts to interact with them.

Technorati Tag: ,

posted @ Wednesday, April 08, 2009 9:31 AM | Feedback (1)

Thursday, April 02, 2009 #

Sharepoint Designer is now free

I've received this wonderful news this morning (it's not an April's fool joke): Sharepoint Designer, the tool that every Sharepoint developer must have, it's now totally free.

Personally I love Sharepoint Designer: this is maybe not the best and intuitive tool for editing and designing a Sharepoint site (layout), but it's an unvaluable tool for quickly build workflow-enabled applications based on Sharepoint (no Visual Studio or particular proramming concepts in order to create a workflow).

Long life to this tool, expecially now that's free for all...

Technorati Tag:

posted @ Thursday, April 02, 2009 11:10 AM | Feedback (0)

Tuesday, March 24, 2009 #

This is a difficult time...

NewEconomy

posted @ Tuesday, March 24, 2009 5:59 PM | Feedback (0)

Thursday, March 19, 2009 #

.NET RIA Services

At MIX '09, together with the announce of the Silverlight version 3 era, an interesting new project was announced to the public: Microsoft has released the first public CTP of .NET RIA Services (formerly codenamed Alexandria), along with a basic first walkthrough of using it.

As explained by Microsoft, .NET RIA Services simplifies the traditional n-tier application pattern by bringing together the ASP.NET and Silverlight platforms. The RIA Services provides a pattern to write application logic that runs on the mid-tier and controls access to data for queries, changes and custom operations. It also provides end-to-end support for common tasks such as data validation, authentication and roles by integrating with Silverlight components on the client and ASP.NET on the mid-tier.

.NET RIA Services simplify Line of Business (LoB) RIA development. They complement the existing Data Access Layer and presentation components in the .NET framework and Silverlight. They build on the foundation of ASP.NET and codify, evolve and support some of the common patterns in web applications.

I've done a quick read of the first walkthrough released and this project seems really interesting... we'll see more in the next months.

Technorati Tag: ,,

posted @ Thursday, March 19, 2009 9:29 AM | Feedback (0)