重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
微软Dynamics 365 Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复395或者20200224可方便获取本文,同时可以在第一间得到发布的最新信息,follow me!
成都创新互联公司服务项目包括嫩江网站建设、嫩江网站制作、嫩江网页制作以及嫩江网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,嫩江网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到嫩江省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
Dynamics 365 Customer Engagement已经强烈推荐使用Power Automate代替Workflow,主要收集常见的问题做解答。
1. Power Automate如何调用Dynamics 365 Customer Engagement中的操作(Action)?
可以登录 或者 ,打开左边的Solutions ,新建或者打开已有Solution。
然后新建Flow。
Power automate怎么看批到哪里了
调用操作时候,注意Connector 要选择 Common Data Service (current environment ).
然后可以选择 Perfrom a bound action 或者 Perform an unbound action 进行调用即可。如果选不到,确认action已经激活,然后看看 https://***.crm.dynamics.com/api/flow/openapi 这个url访问是否报错。
2. 如何获取选项集字段的显示文本。
我开始以为直接查询的时候获取不到,以为只能获取到存储值,后来经高人指点是可以的。
之前我的方法很笨,就是再查询一次stringmap实体,比如 https://***.crm.dynamics.com/api/data/v9.1/stringmaps?$filter=objecttypecode eq 'ly_demo' and attributename eq 'statuscode' and langid eq 1033 and attributevalue eq 1 。
更好的办法是直接从trigger返回的body中获取值,注意选项集字段若为statuscode,需要写成 _statuscode_label。
需要使用表达式输入,例如: triggerOutputs()?['body/_lvo_addresschangetype_label'] ,当然不要全部手写,可以选一个字段值,然后选择 Peek Code,查看使用的表达式,然后自己用表达式来输入,修改自动生成的表达式为自己想要的字段值即可。
如果是通过 Get a record等查询方式,请通过类似 outputs('Your_Action_Name')?['body/ly_optionsetfieldname@OData.Community.Display.V1.FormattedValue'] 的表达式来获取。
3.如何获取当前环境的base url。
这个url很重要,我们在邮件或者别的地方插入链接让用户可以点击打开Dynamics 365的记录就需要这个。
参考文章 Quick Tip: CDS Base URL in Flow 可以知道从前面的查询中获取body中的@odata.id元素的值,然后分割下获取第一元素值即可,表达式类似:
first(split(outputs('Get_Creators_primary_emailaddress')?['body']['@odata.id'],'/api/')) 。
或者
first(split(outputs('Get_Creators_primary_emailaddress')?['body']['@odata.context'], '/api/'))
我一般用一个变量将这个值保存起来,假设变量名是CurrentEnvBaseUrl ,那么插入url使用的表达式就类似:
concat(variables('CurrentEnvBaseUrl'),'/main.aspx?pagetype=entityrecordetn=ly_demoid=',triggerOutputs()?['body/ly_demoid'])
Power Automate中可以用到的函数参考文档:Reference guide to using functions in expressions for Azure Logic Apps and Power Automate
Dynamics 365 Customer Engagement通过URL打开记录,窗体,视图等请参考官方文档: Open forms, views, dialogs, and reports with a URL
4.如何查询的时候同时获取查找字段的其他信息(含主属性信息)。
使用Common Data Service (current environment) 这个connector中的Get a record或者List records查询记录的时候,默认情况下对于查询字段只返回类似如下的三个属性:
"_modifiedby_value@Microsoft.Dynamics.CRM.lookuplogicalname": "systemuser",
"_modifiedby_value@odata.type": "#Guid",
"_modifiedby_value": "21c43fb9-f446-ea11-a816-000d3a3788d7",
如果我要获取查找字段的主属性值甚至其他值呢?如果我要获取modifiedby这个人主属性fullname的值甚至其邮箱呢?当然,通过再一次查询肯定可以。
我这里介绍的是另外一种方法,原理可以参考我的文章 Dynamics 365 We API ODATA语法根据父记录查询子记录,根据子记录查询父记录(附上根据团队,队列名称查成员) 。
具体设置类似如下:
然后你可能会问如何获取这个值?对于使用Get a record,类似的表达式是 outputs('Get_a_record')?['body/modifiedby']['internalemailaddress']
对于使用List records,类似的表达式是 items('Apply_to_each')?['modifiedby']['internalemailaddress'] 。
也不用特别记忆,看自动生成的语法是什么样的,自己修改下即可。
5.能调用自定义工作流活动吗?
我认为当前不能,不代表后续不能。 对比可以参考官方文档, ,Power Automate的功能在不断增强。
6.能发送邮件并显示在D365中的Timeline吗?
在Power Automate中可以通过Outlook这个Connector来发送邮件,但是这种邮件与Dynamics 365的关系不大。有些时候我们希望能调用Dynamics 365中Workflow那种发送邮件的能力,发送的邮件能和D365的记录关联,并展示在关联记录的Timeline中。答案是可以的,详情可以参考 Send Dynamics 365 Emails from Power Automate 或者 Creating and Sending an Email from Dynamics 365 using Power Automate。我总结下重点,也是创建 Email Messages 这个实体记录,收件人可以通过 Activity Party Attribute Name 设置为To,然后在其对应的 Activity Party Attribute Value中设置值来设置,可以设置为类似 /contacts(@{triggerOutputs()?['body/contactlid']}) 这种。邮件的主题当然是Subject字段,内容是Description字段,关于字段会出现很多类似 Regarding (Opportunities) 的字段,找到你要管理的实体类型,设置为类似 /contacts(@{triggerOutputs()?['body/contactlid']}) 这种格式。发送邮件是通过 Common Data Service (current environment ) 这个Connector通过 Perform an bound action来做的,调用的Action Name是SendEmail,参考下图。如果要将收件人设置为文本字段的值,可以参考我这个博文 Dynamics 365中使用工作流发邮件让其可以发往文本字段指定的邮箱 注册一个插件来实现。
7.有类似child flow的功能吗?
答案是有,2019年10月份GA的,可以参考官方文档 Call Child Flows ,博文可以参考 October Updates for Microsoft Flow 。
一般对于child flow我选择Power Apps作为触发器,如果child flow有输出参数,那么它的最后一个action一般是Respond to a Power App or flow 或者 Response。
parent flow调用child flow的时候选择Flows连接器下面的 Run a Child Flow 这个action来调用。
8.异常处理一般如何做?
可以参考 Advanced Error Handling With Power Automate , Microsoft Flow Error Handling ,Try-Catch pattern in Microsoft Flow 。
主要使用result函数,函数参考见 Reference guide to using functions in expressions for Azure Logic Apps and Power Automate 。
参考官方文档:Handle errors and exceptions in Azure Logic Apps 。
还需要考虑一些limit,官方文档请参考:Limits and configuration information for Azure Logic Apps
我的如下可以供参考:
用到的表达式分别是:
result('Main_Scope')
createArray('Failed', 'TimedOut')
item()['status'])
body('Filter_array')
items('Apply_to_each_result')['name']
items('Apply_to_each_result')['status']
items('Apply_to_each_result')['code']
items('Apply_to_each_result')['outputs']['body']['error']['message']
微软 Dynamics 365 是微软新一代云端智能商业应用,通过对 CRMERP 的完美整合,助力企业成长及数字化转型。
Dynamics 365 通过交付无缝协作且针对特定用途的全新云端应用,帮助企业重塑生产力及业务流程,并通过与Azure、Office 365、Power BI 等微软重磅产品的无缝集成,为企业带来全业务流程的数字化转型升级,进而让企业增强市场适应能力和业务创新能力,突破成长瓶颈,顺利实现数字化转型!
扩展资料:
Microsoft Dynamics 365 四大价值
1、按需起步
与现有IT资源整合,定制化的流程;在信息孤岛之间打通业务流程,更快将线索转化为营收;根据自己的发展节奏按需购买, 适应企业和市场的变化。
2、随时高效
与微软其他产品,如Office 365,Outlook无缝集成;用户界面袭承“一个微软”的风格,利用熟悉的操作方法快速上手、产出;跨设备统一体验,适配于iOS,安卓,Windows和网页版。
3、智能内置
在所有的功能点和业务环节都有内置的智能系统支持;开箱即用的可视化数据与商业智能,轻松获得深度的商业洞察;变革性的高级分析平台,提供准确的预测和实用的信息。
4、灵活扩展
全应用共享数据模型,可实现多应用的功能组合;利用PowerApps和Microsoft Flow无代码编写业务程序,任务流程自动化;可随时在现有业务上添加新功能,也可以快速、平缓地调整运营模式。
Microsoft Dynamics是微软公司面向企业的商业软件。
客户关系管理(CRM):
Microsoft Dynamics CRM
企业资源计划(ERP):
Microsoft Dynamics AX(Axapta)中大型企业国际化应用支持与Office集成
Microsoft Dynamics GP(Great Plains)低端中等市场商务过程
Microsoft Dynamics NAV(Navision)业务解决方案系统
Microsoft Dynamics SL(Solomon)项目型、服务型及分销驱动型组织