今天这个系列给大家带来怎样在connected field service中部署IoT Central 并且做连接. 首先, 这里提供微软官方的tutorial的链接https://docs.microsoft.com/en-us/dynamics365/customer-engagement/field-service/cfs-iot-central-setup 第一步,我们需要注册Azure IoT Central https://azure.microsoft.com/en-us/serv…
上个blog中介绍了我们怎么去部署IoT central和 connected field service做连接. 我们这次介绍怎么把IoT设备在CRM中怎么去注册. 首先我们打开devices,再选中相应的显示的设备. 我们把相应的account 和 category赋予给设备.…
首先, 我们可以打开IoT alert, 并且点击上的 create a flow. 接下来,我们使用微软准备好的模板:Sample Contoso- When a work order is created in Connected Field Service, update IoT Central 我们需要在以下几点注意不要匹配错了: 保存之后,接下来让我们创建另外一个flow 同样我们也需要注意到flow当中这些地方匹配正确 当我们匹配之后, 让我们创建work order 并且把必要信息…
微软 Connected Field Service 是一个提供Azure IoT 和 Dynamics 365 连接的这样一个框架 有两种方式部署CFS, 一种是用IoT Hub PaaS, 一种是IOT Central Saas. IoT Hub的架构图: IoT Central 的架构图 我们看到IoT central的架构图很简单. 是用Microsoft flow来连接D365 field service 和 Azure IoT Central.  IoT Central的背景还是Io…
上期降到了怎样部署connected field service(CFS) 我们假设现在IoT 设备是温度监控器, 当温度触发我们之前预设的温度值, IoT会通过IoT Hub 发送IoT Alert到CFS中. 第一次触发, 系统会自动发送reboot的command. 为了有更好的用户体验, 我们需要自动发送command. 自动发送非常简单. 首先,我们需要创建一个workflow 我们的workflow需要在IoT Alert创建的时候触发. 这个workflow需要有以下两步: 1.…
今天浪费了2,3个小时再connected field service(CFS)上面. 状况如下 1. 在CFS中添加了新的customer assets,并且点击了注册按钮. 2. 注册步骤一直在in progress的状态. 没有任何error提示或者状态改为registered. 3. 设备在simulator中的列表能显示出来 4. simulator当中可以用command来激活,但是提高摄氏度之后没有IoT Alert创建 当我们去到azure 相应的service group中,…
配置field service mobile其实微软是有官方文档的, 但是没有坑的微软产品不是好产品. 一些细节设置文中还是没有考虑到的. 所以这里带大家配置一下field service mobile. https://docs.microsoft.com/en-us/dynamics365/customer-engagement/field-service/install-field-service 首先,我们要确保field service有安装. Online: Online用户可以直接…
Dynamics 365 CRM提供了多种编程模型,你可以灵活地按需选用最佳模式. 本文是对Dynamics 365 CRM编程模型的综述. 概览 下图表明了Dynamics 365 CRM的主要可编程场景.请根据整体解决方案选择合适的模型. 从扩展的角度来看,你可以在Dynamics 365中实现以下附加功能: 应用于PC或移动设备的控制台应用程序或者WPF(Windows Presentation Foundation),即图中上方.Net下的绿框. 处理Dynamics的Web表单的扩展,…
使用CRM 大家想必都做过copy. 从一个instance 复制到另外一个instance. 如果你是Dynamics 365 CRM 用户, 并且你的instance超过500GB,甚至1TB+的情况. 我强烈建议你去微软开个ticket 让SE去帮你做copy. 原因有一下几点: large instance copy会花很长的时间. minimal copy 也同样. 这是因为现有的微软instance copy是把数据从resource instance 复制到copy instanc…
Dynamics 365 CRM 的空间是要买的. 但是很多情况下用户可以去清理CRM从而达到给空间减重的方法 两大使用DB空间大的功能 1. Audit log 审计记录 审计记录是用来记录各个field entities.这个功能系统默认是关闭的,很多admin会打开这个功能. 审计记录会吃掉很多的空间 清理老旧的审计记录会给带来非常可观的空间 官方文档提供了10种方法, 最常用有效的就是清理审计记录(前提在于admin打开审计记录功能) 微软官方文档 2. AsyncOperationBa…
让我们来看看官方文档是怎么讲的 https://docs.microsoft.com/en-us/previous-versions/dynamicscrm-2016/developers-guide/gg326836(v=crm.8) Every time a running plug-in or Workflow issues a message request to the Web services that triggers another plug-in or Workflow to…
背景介绍: 本地部署Microsoft Dynamics CRM 9.0正常可用,后打补丁到9.0.16.7,打开系统quote报 “ Unable to Load plug-in assembly” 错误(打商机opportunity窗体时也会报“Assembly content(Microsoft.Dynamics.Sales.Plugins, Version=9.0.1.0) does not match the expected assembly identity (Microsoft.…
问题定义 使用Azure应用服务(App Service),部署Java应用,使用Tomcat容器,如何自定义错误页面呢?同时禁用DELETE, PUT方法 解决办法 如何自定义错误页面呢?需要在 Java 的 web.xml 进行配置 error-page,具体内容如下: <?xml version="1.0" encoding="utf-8" ?> <web-app xmlns="http://xmlns.jcp.org/xml/ns…
Isolation Mode 也被称作为Plugin Trust CRM里面有两种plugin trust / isolation mode 1. Full Trust 只在OP系统中可使用,没有限制 plugin 挂掉之后会影响到CRM服务器运行. 可以访问服务器文件 2. Partial Trust or Sandbox 可在OP系统和online系统中使用 运行在特定的区域中,当plugin crash之后, CRM系统不会随之崩盘 Plugin 在secure layer底下运行, 并且…
Snapshots of the primary entity's attributes from database before(pre) and after (post) the core platform operation. 怎么理解这句话呢 简单的我们可以理解PreOperation与PostOperation的 entity中数据的镜像. 使用Pre-Entity镜像的一些案例: 1. 如果你需要对original data在modification之前做使用. 2. 如果你需要fo…
微软动态CRM专家罗勇 ,回复327或者20190428可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 在插件中限制记录的删除是常见的场景,比如根据statuscode的状态来限制删除. 这时候在实体的Delete消息的Pre Operation阶段注册一个插件,并注册一个Image,我这里类似如下: 然后我这里使用插件代码类似如下: using Microsoft.Xrm.Sdk; using System; namespace Plugins { public…
我们之前创建的plugin都是使用default的 run in User's Context. 理解就是使用正在登陆的security context用户信息 那有个问题,如果当前用户的security role没有相应的权限访问功能,我们就要安排一个新的用户 e.g. admin来记录信息而非当前用户. 让我们在registration tool更新TaskCreate class之后再CRM中打开新建Contacts. 我们可以打开activities发现follow up 里用户更改为在…
我们之前都学习到怎么添加,debug还有update plugin. 今天带大家过一下怎么从CRM instance当中删除plugin. 首先让我们打开Settings -> Customizations -> Customize the system 打开Plugin assemblies 然找到我们的MyCRM 当我们点击delete, 之后会报错. 错误信息会如下. 这是因为我们的plugin已经在Plugin Registration Tool 中 注册step步骤 我们需要去SDK…
写了这么多期的随笔,很多人会问,怎么debug写好的plugin呢 首先我们需要准备以下内容 Visual Studio Plugin Registration Tool CRM Instance Error Log 首先,我们要打开Plugin Registration Tool 然后我们需要Install Profiler install成功之后, 我们下一步要讲plugin的step  start profiling 我们选择exception之后点击确定 成功之后的step会显示如下 现…
开始之前,我们要确认一下 Plugin 的 pipeline. PreValidation -> PreOperation -> Server Side System Main Event-> PostOperation PreValidation 是在security check 之前, 通常会用来加载外部数据和用户不相关的内容.PreOperation 是在security check 之后 服务器处理之前, 通常会用来做一系列的功能.PostOperation 是在System M…
上两节我们创建了一个 PreOperation的plugin 今天我们创建一个PostOpeartion的plugin和之前的plugin连接起来 当创建contact之后,我们要添加一个task给新创建的contact 首先,我们创建新的class, 并且取名TaskCreate.cs 其次,我们把代码Execute代码复制到TaskCreate.cs中 然后我们可以从Settings -> Customization -> Customize the System 中查看Task的Form…
源代码连接:https://github.com/TheMiao/Dynamics365CRM/blob/master/MyCRM/MyCRM/HelloWorld.cs 首先,我们需要创建一个.NET framework的class library. 其次, 我们要加入以下NuGet Package 接下来我们要assign 这个class 强名称签名使软件组件具有全局惟一的标识 接下来, 我们要在HelloWorld class中引用 IPlugin interface. 我们创建这个plu…
这篇是plugin的终结. 通过之前的11期我们应该发现了plugin其实学习起来不难. async plugin 是把plugin的功能async run起来. e.g.  我们之前做过的preOperation的plugin会马上执行并且马上有数据显示在entity中. 但是async plugin会在async 形式下run, 使用场景是有很大的计算量或者处理量会导致CRM server进程被block 掉. 我们可以在plugin registeration tool中选择是否需要asy…
Config data 可以在registering step 的时候来配置 配置好的config data 可以使用 constructor 来获取 Secure Config 和 UnSecure Config 的区别 Unsecure 在Unsecure里面的信息可以保存到导出的.zip solution当中 Secure 在secure里面的信息不会被导出到.zip 中, 可以放e.g. account, password 或者url 的这些敏感信息 首先,我们在registeratio…
CRM 可以实现plugin之前的值传递. 我们可以使用SharedVariables 把值在plugin之间传递 实现plugins之间的传递非常简单,我们只需要用key value pair来配对传递. 读取的时候用key来获取相应key的value try { /* * SharedVariabls can share the variabls to different plugins * SharedVariabls will only work under same pipeline…
Golden Rules 1. Platform only passes Entity attributes to Plugin that has change of data. 2. If the user does not enter any value into attribute, the attribute is not avaible in AttributeCollection of Entity. 3. Always check if attribute is present i…
在添加自定义按钮之前,我们需要下载这个工具 RibbonWorkbench, 它是专门针对自定义命令栏和Ribbon区域. 下载之后是一个zip压缩包. 怎样安装RibbonWorkbench: Setting -> Solution -> Import solution -> 选择RibbonWorkbench 如果我们刷新页面之后,在solution页面就能看到Ribbon Workbench会在solution页面中加载 Ribbon workbench 界面: 这里,我已经建好了…
workflow 总是需要一个record作为起始点(create, update, delete or on-demand) 但是action 不需要. 例如我们需要action来创建一个发送email给Manager, action并不是绑定到CRM record, action可以包括/不包括在workflow当中, 或者可以被c# 代码 trigger, 也可以被 OOB的 CRM editor触发.…
Microsoft Azure是一个开放的,灵活的云平台,除了对自家的.Net平台有良好的支持外,对于各种开源的软件,语言,工具,框架都有着良好的支持,比如Java,Php,Python等等,你可以使用自己喜欢的语言开发任何应用部署在Azure的web site或者云服务中. Azure的云服务是Azure的一个PAAS平台,同样支持多种不同的语言和框架,并且可以基于多种不同的阈值如CPU负载,队列,定时等等实现Auto scaling等高级功能,如下图所示: 本文简单介绍如何使用Azure所提…
接上文. 9.在进行发布之前,需要对我们的订阅做一些设置,因为默认情况下,Azure的service end指向的是Azure global的站点,如果我们要将服务发布在Azure的中国站点,需要做下简单的设置,在Eclipse中,打开偏好设置(preference),找到Azure,在service endpoint页面中,选择"windowsazure.才能(China),选择确定: 10. 回到项目,选择myazuredeploy并单击右键,选择Azure,properties,第一项是选…