Tecno Dgs Blog

Septiembre del 2006


Publicado el: 26 de Septiembre, 2006, 10:14

Leo en este post de la gente de Invoke System, que han publicado, una plantilla de Figuras de Visio, para el Diseño de la interfase de Usuario de CRM:

Las figuras incluidas son  :

  • CRM Menu Bar
    • Top Menu Item
    • Menu Item
  • CRM Tool Bar
    • Toolbar Button (Icon & Label)
    • Toolbar Dropdown
    • Spacer
  • CRM Form Page
    • Tab Control Body
    • Tab Control Tab
    • Field Control (for Label)
    • Section Control
    • Textbox
    • Radio
    • Memo/Notes Control
    • Lookup
    • Date/Time
    • Checkbox
  • CRM Home Page
    • Left Navigation Bar (Wünderbar)
    • Left Navigation Bar Item
    • CRM Grid Control
      • Grid View Control
      • Grid Colum
  • All CRM Form Controls support the following features:
    • Label & Field Values
    • Required Levels: None, Recommended, Required
    • Enabled / Disabled
    • Hide / Show Label
  • Other controls support features that typically "make sense".  Be sure to "right-click" on shapes to see all the special properties that are available.
    • Tabs can be active or not
    • Toolbar Buttons can show Icon only, Label Only, Spacer only or any combination
    • Page Controls allow you to set the title

Pueden bajerlos Aqui

Muchisismas gracias al Visio Shape Development Team de Invoke: Phillip Hunt y Jake HoffnerVer

Por dgsosa, en: MS-CRM 3.0
Publicado el: 20 de Septiembre, 2006, 14:27

Según el artículo "Cuando visita una página Web que usa un objeto emergente personalizado, Internet Explorer 6 se cierra inesperadamente.", que fue publicado el día 4/9, el problema de los Menús de CRM era provocado por un error en el IExplorer. Y comentado en InvokeSystems y en I.C.U CRM

Resumen artículo:

Cuando visita una página Web que usa un objeto emergente personalizado,Microsoft Internet Explorer 6 se cierra inesperadamente y genera unerror en el archivo Mshtml.dll. Este problema se produce después deinstalar la actualización de seguridad 918899 en un equipo basado en elService Pack 2 (SP2) de Windows XP o en el Service Pack 1 (SP1) deWindows Server 2003. Si se ve afectado gravemente por este problema,hay disponible un hotfix. De lo contrario, recomendamos que espere a lasiguiente actualización de seguridad acumulativa para Internet Explorer.

Para solucionarlo hay que aplicar un éste HotFix que fue liberado el día 19/9, (es una descarga con Validación de Windows Genuino).

Por dgsosa, en: MS-CRM 3.0
Publicado el: 14 de Septiembre, 2006, 16:00

Es este ejemplo, la idea es mostrar como, hacer una encuesta, que se comunique con CRM, por medio de los WebServices y que a partir de la respuesta de la misma, pueda cerrar el caso ( incident ) , además de almacenar los resultados en una tabla ( en una base separada ) para luego hacer estadísticas sobre el resultado de las mismas.

Es una pagina asp.net que recibe como parámetro el "Nro de Caso" (ticketnumber) de un caso (incident).  Muestra el Cliente, el Titulo y la Descripción del caso. Para ello se conecta al WebService y hace un Query con el nro de caso y los ítems a elegir de la encuesta. (En este caso en particular son 4 preguntas con 4 opciones cada una) y un Botón "Enviar".

Al "Enviar" (dependiendo del parámetro "CerrarEncuesta")  crea una resolución de caso, la asocia al caso, y envía la petición de resolución por medio del servicio. Poniendo como descripción de la resolución, la respuesta de la encuesta. Además, graba un registro en la tabla de datos de la encuesta.

El código:

Esta función, devuelve una instancia del WebService, usando las credenciales correspondientes.

Private Function Login() As CrmService

    ' función Login ()
    ' Toma los parametros del Web.config, y se loguea en el webservice

    Dim MyService As New CrmService

    Dim CRMServiceUser As String = ConfigurationSettings.AppSettings("CRMServiceUser")
    Dim CRMServicePass As String = ConfigurationSettings.AppSettings("CRMServicePass")
    Dim CRMServiceDominio As String = ConfigurationSettings.AppSettings("CRMServiceDominio")

    ' Si el parametro CRMServiceUser esta vacio,
    ' utiliza las credenciales del usuario que lo está corriendo
    If IsNothing(CRMServiceUser) Then
        MyService.Credentials = System.Net.CredentialCache.DefaultCredentials
    Else
        MyService.Credentials = New System.Net.NetworkCredential(CRMServiceUser, CRMServicePass, CRMServiceDominio)
    End If
    Return MyService
End Function

Esta función, retorna un caso (incident) a partir del Nro de Caso (string)

Private Function GetCaso(ByVal NroCaso As String) As incident
    ' función GetCaso ()
    ' Parametros : Numero de caso ( ticketnumber ) del caso que se quiere mostrar
    ' Retorna : un Caso ( incident )

    ' DEfinir las columnas a recibir
    Dim cols As New ColumnSet
    cols.Attributes = New String() {"title", "description", "customerid", "ticketnumber", "ownerid", "statecode"}
    ' Definir las Condiciones
    Dim condition As New ConditionExpression
    condition.AttributeName = "ticketnumber"
    condition.Operator = ConditionOperator.Like
    condition.Values = New String() {NroCaso}

    ' Armar el filtro con las condiciones
    Dim filter As New FilterExpression
    filter.FilterOperator = LogicalOperator.And
    filter.Conditions = New ConditionExpression() {condition}
    
    ' Crear el Query con las Columnas y el filtro
    Dim query As New QueryExpression
    query.EntityName = EntityName.incident.ToString
    query.ColumnSet = cols
    query.Criteria = filter
    
    Try
        ' Ejecutar el query
        Dim Casos As BusinessEntityCollection = service.RetrieveMultiple(query)
    
        If Casos.BusinessEntities.Length = 1 Then
            Dim caso As incident
            caso = Casos.BusinessEntities(0)
            Return caso
        Else
            Return Nothing
        End If
    Catch e As Exception
        Return Nothing
        'Stop
    End Try
End Function

Esta función, recibe por parámetro el caso (incident) y el texto que ira en la descripción. Retorna Verdadero, si pudo cerrar el caso.  Podría no poder hacerlo si se encuentra Actividades pendientes, en el caso. O si es caso ya estuviera cerrado.

Private Function CloseCaso(ByVal caso As incident, ByVal TxtEncuesta As String) As Boolean
    ' función CloseCaso ()
    ' Parametros :  Caso ( incident ) que se quiere cerrar
    '               TxtEncuesta : texto que se va a incluir
    '                       como descripcion del cierre del caso (incidentresolution)
    ' Retorna : True si OK

    If caso.statecode.Value <> IncidentState.Activo Then
        Return False
    Else

        Dim activity As New incidentresolution
        activity.incidentid = New Lookup
        activity.incidentid.type = EntityName.incident.ToString()
        activity.incidentid.Value = caso.incidentid.Value
        activity.ownerid = New Owner
        activity.ownerid.type = EntityName.systemuser.ToString()
        activity.ownerid.Value = caso.ownerid.Value
        activity.subject = SUBJECT_RESULUCION_CASO
        activity.description = TxtEncuesta.ToString

        Dim closeReq As New CloseIncidentRequest
        closeReq.IncidentResolution = activity
        closeReq.Status = -1

        ' Cierra el caso
        Try
            Dim stateSet As CloseIncidentResponse = CType(service.Execute(closeReq), CloseIncidentResponse)
            Return True
        Catch e As Exception
            'Stop
            Return False

        End Try

    End If

End Function
Por dgsosa, en: MS-CRM 3.0
Publicado el: 8 de Septiembre, 2006, 9:44

Encontré en el Blog de Joris Kalz un excelente programita (un Servicio), que Pre-Cachea las páginas de CRM (y según el autor podría cachear cualquier otra aplicación Web). Esto permite que al ser solicitadas, ya las tenga en memoria el IIS con lo cual son entregadas al Cliente en forma casi instantánea.

Lo he probado en nuestra instalación y he logrado bajar violentamente los tiempos de respuestas. Por ejemplo: el traer la grilla con 50 Casos tardaba unos 2-3 seg., con la utilización del pre-cache, es instantáneo.

La instalación es muy sencilla, y su configuración también. Para instalarlo, solo hay que ejecutar el setup, poner el usuario que va a correr el servicio y listo. El Servicio es instalado en: <Archivos de Programas>/CRMTools/Caching Tool . Al reiniciar el Server ya estará cacheando las paginas indicadas en el archivo URLList.txt (que ya viene preparado con una muy amplia cantidad de paginas de CRM). Se puede usar para cachear cualquier otra aplicación Web. Solo hay que editar el archivo de configuración

Puedes bajarlo aquí : CachingTool.zip. también esta disponible el código fuente SourceCode.zip
Requiere tener instalado .Net Framework 2.0 y el fuente, esta en VS.2005

Próximos pasos : Probarlo para cachear paginas de DNN y ver como responde.


Por Diego, en: MS-CRM 3.0
Publicado el: 7 de Septiembre, 2006, 15:00

La idea de este blog, es ir contando, mis experiencias en torno a las tecnologías con las que Trabajo y convivo todos los días.

  • SAP: Reconocido ERP, del cual participé en unas 7 implementaciones y su mantenimiento en varios países de Latinoamérica
  • DotNetNuke : un Application Web Framework, un Administrador de contenidos, que nos permite crear Sites, en muy poco tiempo.
  • MS-CRM: Es el CRM de Microsoft, conocido también como dynamics
  • SharePoint: Es el Administrador de contenidos, de Microsoft

Intentaré contarles algunos trucos, algunos consejos, algunos problemas.

Saludos y bienvenidos
Diego


Por dgsosa, en: General