Saturday, November 19, 2022

Power Apps

Dataverse - Create Custom API https://softchief.com/2021/08/19/step-by-step-custom-api-in-microsoft-dataverse-dynamics-365-configuration-and-demo-with-plugin/ CLI for Microsoft 365 - How to use in Power apps? https://www.m365princess.com/blogs/cli-microsoft-365-power-platform/

Power app coding

-----------------------------

https://powerusers.microsoft.com/t5/Building-Power-Apps/Edit-each-record-in-Powerapps-SharePoint/td-p/412728


Edit a record

-----------------------------------------------------


https://searchcontentmanagement.techtarget.com/tip/Follow-6-Power-Apps-best-practices-to-build-business-apps


https://powerapps.microsoft.com/en-us/roadmap/

After creating First Portal App, it adds 16 solutions to our Tenants.


WHEN TO USE MODEL DRIVEN APP, CANVAS OR PORTAL

https://devoworx.net/canvas-app-vs-model-driven-app-vs-portal-app/#canvas-app-in-powerapps


POWER APP PRICING

https://powerapps.microsoft.com/en-us/pricing/

  • Although, Power Apps per app plans appear in the Microsoft 365 admin center, you shouldn't attempt to assign them to users there. Power Apps per app plans must be allocated to an environment (and not to users) by an admin in the Power Platform admin center. After per app plans are allocated to an environment, they are assigned when apps are shared with users in the environment.
  • Power Apps for Windows isn't supported if you have the Power Apps per app plan

PER APP PLANS:
https://docs.microsoft.com/en-us/power-platform/admin/about-powerapps-perapp

https://docs.microsoft.com/en-us/powerapps/maker/canvas-apps/share-app-guests#frequently-asked-questions

Canvas or Model DRiven apps can be shared to Guest accounts. 
A guest is someone outside the same Tenant, but part of another Tenant.

Portals can be accessed by Anonymous users and external customer with fb,google..etc

Portal wil work only on Browsers
Canvas apps will work on either Mobile or Tablet, can create custom UI, can have many data sources, but not responsive

Model Driven Apps can work in Browser or any device, can use only Dataverse as source, limited UI


WHY POWER APPS LICENCING IS CONFUSING

http://powerappsguide.com/blog/post/why-microsoft-365-licensing-confusing


Canvas APp with sp list - securtiy

https://www.spguides.com/powerapps-role-based-security/


QR CODE IN POWER APPS

https://powerusers.microsoft.com/t5/Community-App-Samples/QR-Code-generator/td-p/199745


DYNAMICALLY LIST ROWS FROM ANY DATAVERSE TABLE WITH FETCHXML IN POWER AUTOMATE


https://linnzawwin.blogspot.com/2022/11/dynamically-list-rows-from-any.html?m=1

DLP

https://learn.microsoft.com/en-us/power-automate/prevent-data-loss


Thursday, February 17, 2022

GIT

 

https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup


GIT LEARNING:

cd repofolder

git checkout - to checkout current branch

git checkout -b feature/test1 - create a local copy of staging branch

git commit -a -m "message"

git checkout staging --- pointing back to staging

$ git branch -d hotfix -  delete the new branch


Sunday, November 21, 2021

SSL Certificates how to check

 Command Prompt - mmc

How can I get a list of installed certificates on Windows? Is there a way to check if my certificate has the private key attached? In this tutorial we’ll show you easy ways to view all certificates installed on your Windows 10 / 8 / 7 computer, so you can check the certificate status, export, import, delete or request new certificates.

Method 1: View Installed Certificates for Current User

  1. Press the Windows key + R to bring up the Run command, type certmgr.msc and press Enter.

  2. When the Certificate Manager console opens, expand any certificates folder on the left. In the right pane, you’ll see details about your certificates. Right-click on them and you can export or delete it.

    By default, the EFS certificate could be found under the “Personal” -> “Certificates” folder. Double-click on the EFS certificate and you can know if it has the private key attached. Without the private key, you’re unable to decrypt your EFS files.

Method 2: View Installed Certificates for Local Computer

  1. Press the Windows key + R to bring up the Run command, type mmc and press Enter to open Microsoft Management Console.

  2. Click the File menu and then select Add/Remove Snap-in.

  3. Select Certificates from the list of snap-ins, and click Add.

  4. In the next dialog box, select Computer account and click Next.

  5. Select Local computer and click Finish.

  6. Now you’ll back at the “Add or Remove Snap-ins” window, just click OK.

  7. When you open any certificates folder, you will see that the certificates are displayed in the right pane.

Saturday, August 15, 2020

CRM Genral Queries

BASIC SECURITY PERMISSIONS
--------------------------------------------

DMT Business Unit
User1, User2

Scenario1:User 1 & 2 wants to see all the data under their BU/business unit, but both users can edit only their own data

Say records are created and assigned to them self
Entity: dmt_test
Security Role should be: dmt_test READ BU LEVEL, WRITE USER LEVEL


Scenario 2: User 1 & 2 are under TEAM UD and wants to see only their team data, but can edit only their own - COULD NOT ACHIEVE IT - 
Say records are created and assigned to them self
Entity: dmt_test
Security Role should be: dmt_test READ USER LEVEL, WRITE USER LEVEL
Create a security role for TEAM UD: dmt_test READ USER LEVEL

Scenario 3: User 1 & 2 are under TEAM UD and wants to see & edit only their team data
In this case records should be assigned to TEAMS
Entity: dmt_test
Create a security role for TEAM UD: dmt_test READ USER LEVEL


SITEMAP PERMISSION
---------------------------------------------------------------------------

Sitemap has main menu URBAN DEVELOPMENT, under that SERVICE REQUEST and PROJECT

TO view SERVICE REQUEST
User should have read access to Service Request entity
In Sitemap, under SERVICE REQUEST sub area, create a Privilege and give entity name as service request and give read access

If Privilege not given, to view Urban development, user should have access to all the sub areas under UD
http://www.crmconsultants.co.uk/creating-a-role-based-sitemap-navigation-in-dynamics-crm/


BASIC PERMISSION REQUIRED FOR CRM USER LOGIN
-----------------------------------------------------------------------------
https://www.inogic.com/blog/2016/11/minimum-privileges-required-to-login-microsoft-dynamics-365/

Navigate to Business Management Tab,

  • Grant Read (Organization Level) Privilege for the Organization entity.

Read Privilege for Organization Entity

  • Grant Read (Business Unit Level) Privilege for the User entity.

Read Privilege for User Entity

  • Grant Read (Organization Level), Append (Organization Level), Append To (Organization Level) Privilege for the Currency entity.

Multiple Privileges for Currency entity

This is it for the Business Management Tab.

Next, navigate to Core Records Tab,

  • Grant Create (Organization Level), Read (Organization Level), Append (Organization Level), Append To (Organization Level) Privilege for the Post Entity.

privileges for post entity

  • Grant Create (User Level), Read (User Level) Privilege for the User Entity UI Settings

User Entity UI Settings

Next, navigate to Customization Tab,

Grant the Privileges as per the below screenshot.

Grant Privileges


PERMISSION REQIRED FOR ACCESSING SHAREPOINT
----------------------------------------------------------------------------

Core Records:
Document Locations: Read, Append and Append To
Sharepoint Site: Read, Append, Append To
------------------------------------------------------------------------------------------------------------------

select top 100 * from List where listname like '%partic%' ---list id BEC96ECA-EE21-E611-80D3-02BFC0A868F5
 select top 100 * from ListMember where listname like '%partici%'

  select * from ListMember where listid in('BEC96ECA-EE21-E611-80D3-02BFC0A868F5') --

  select * from Contact where contactid='735BC795-633F-E511-8A45-005056911DB0'

  bec96eca-ee21-e611-80d3-02bfc0a868f5

Select  * from  [MetadataSchema].[Attribute] a  inner join [MetadataSchema].[Entity] e on  e.EntityId=a.EntityId where e.Name='entity name'

Add CRM tracing using Windows PowerSHell

Register the cmdlets

  1. Log in to the administrator account on your Microsoft Dynamics CRM server.
  2. In a Windows PowerShell window, type the following command:
    Add-PSSnapin Microsoft.Crm.PowerShell
This command adds the Microsoft Dynamics CRM Windows PowerShell snap-in to the current session. The snap-in is registered during the installation and setup of the Microsoft Dynamics CRM server.

To obtain a list of the current settings, type the following command:

Get-CrmSetting TraceSettings
The output will resemble the following:
CallStack     : True Categories    : *:Error Directory     : c:\crmdrop\logs Enabled       : False FileSize      : 10 ExtensionData : System.Runtime.Serialization.ExtensionDataObject 

Set the trace settings

  1. Type the following command:
    $setting = Get-CrmSetting TraceSettings
  2. Type the following command to enable tracing:
    $setting.Enabled=$True
  3. Type the following command to set the trace settings:
    Set-CrmSetting $setting
  4. Type the following command to get a current list of the trace settings:
    Get-CrmSetting TraceSettings
To disable tracing through Windows PowerShell, follow these same steps, except use the following command in step 2:
$setting.Enabled=$False
Note The format of the example commands for each value should be as follows:
$setting.Enabled=$EnabledValue ($True or $False)

$setting.CallStack=$StackValue ($True or $False)

$setting.Categories="*:Verbose"

$setting.Directory="C:\Program Files\Microsoft Dynamics CRM\Trace"

$setting.FileSize=10


The output will resemble the following:

CallStack     : True Categories    : *:Error Directory     : c:\crmdrop\logs Enabled       : True FileSize      : 10 ExtensionData : System.Runtime.Serialization.ExtensionDataObject 

Microsoft Dynamics CRM 4.0, 2011, and 2013 trace log file locations

When you create a trace in Microsoft Dynamics CRM, the Trace Directory registry key is ignored. For tracing on the Microsoft Dynamics CRM, the trace log file is created in the following folder:
Drive:\Program Files\Microsoft Dynamics CRM\Trace
For tracing on the Microsoft Dynamics CRM 4.0 client for Microsoft Office Outlook and for tracing on Microsoft Dynamics CRM 4.0 Data Migration Manager, the trace log file is created in the following folder if you do not have Update Rollup 7 or a later cumulative update:
DriveName:\Documents and Settings\ InstallingUser \Application Data\Microsoft\MSCRM\Traces

For tracing on the Microsoft Dynamics CRM 2011 or 2013 client for Microsoft Office Outlook and the Microsoft Dynamics CRM 4.0 client for Microsoft Office Outlook and for tracing on Microsoft Dynamics CRM 4.0 Data Migration Manager, the trace log file is created in the following folder if you have Update Rollup 7 or a later cumulative update installed:  

DriveName:\ InstallingUser \Local Settings\Application Data\Microsoft\MSCRM\Traces

CRM Concatenate Two Text Fields
https://community.dynamics.com/crm/f/117/t/215785
Hi AXCRM1,
You can set this through a workflow, I verified this and it worked successfully.  I did the following:
1.  I setup a real time workflow on a test entity
2.  I fired the workflow on the change of the name field
3.  Steps
   a.  Step 1 - Update record to set text field to the Name field value and a space
   b.  Step 2 - Updated record to "Append" the createdon date field

When I changed the name it saved it correctly with the two field concatenated so I assume it would work fine as well with a day of birth type field.
How to move Duplicate Detection Rules
https://blogs.msdn.microsoft.com/arpita/2014/10/15/export-duplicate-detection-rules-from-one-organization-and-import-to-another-organization-in-crm-2013/
Permission Check on DB
USE AdventureWorks2012; SELECT * FROM fn_my_permissions (NULL, 'DATABASE');

INTERNET FACING DEPLOYMENT OF CRM CE
---------------------------------------------------------

https://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/deploy/configure-an-internet-facing-deployment?view=op-9-1

Saturday, March 19, 2011

Extension Methods in C#

What is an Extension Method ?Extension method helps you to add new methods to an existing types like int,
string or to your custom types(classes).I will explain with an example to make it more clear;Int datatype has a method called ToString().Now I want a method on Int to
find out whether it is an Odd or Even (Say IsEven()). How to do it ? Use Extension Method!

Why Extension Methods ?My first question here is how do we achieve the above task(adding IsEven()
function) without Extension Method?Yes, we can do this by Extending Int type to another class and write IsEven
function there. But in this case you have to create an object of this class
to use this new function. If you use extension methods you don't need to do
all these things!
Suppose if you have a class but no source code and want to add a new function
to this class, use Extension Methods..

How to use Extension Methods ?I will give 2 examples for this. One is adding IsEven() to the built in Int
type. In second example I will show you how to add a new method to our custom class using Extension method.
All your extension methods should be static and it should be in a static
class. Also, the first parameter of the extension method describes to which
type this method should be part of.
Adding IsEven() method to Int Type:
namespace OperationsMethods
{
public static class ExtensionMethods
{
public static bool IsEven(this int val)
{
int result= val%2;
return result == 0 ? true : false;
}
}
}
How to use it? see below code..
protected void Page_Load(object sender, EventArgs e)
{
int num = 100;
bool isEven=num.IsEven();
Response.Write(isEven.ToString());
}


Example 2: Adding method to custom type
Below is my operation class:
namespace Business{
public class operations
{
public operations()
{ }
public int Add(int num1, int num2)
{ return num1 + num2; }
}
}
Now I want to add a new method called Substract() to this class using
extension method. So here goes our Extension method:
namespace OperationsMethods
{
public static class ExtensionMethods
{
public static int Substract(this operations op, int num1, int num2)
{ return num1 - num2; }
}
}
Using this...
protected void Page_Load(object sender, EventArgs e)
{
operations obj = new operations();
int res= obj.Substract(500, 200);
Response.Write(res.ToString());
}

Friday, January 28, 2011

JQuery Basics...

$('#name').val() - Get value of object having id 'name'
$(this) - Current HTML element
$("p") - All PARAGRAPH elements
$("p.intro") - All PARAGRAPH elements with class="intro"
$(".intro") - All elements with class="intro"
$("#intro") - The first element with id="intro"
$("ul li:first") - The first li element of each ul
$("[href$='.jpg']") - All elements with an href attribute that ends with ".jpg" $("div#intro .head")- All elements with class="head" inside a div element with id="intro"
$("p").css("background-color","yellow");


Method Description

bind() - Add one or more event handlers to matching elements
blur() Triggers, or binds a function to the blur event of selected elements
change() Triggers, or binds a function to the change event of selected elements
click() Triggers, or binds a function to the click event of selected elements dblclick() Triggers, or binds a function to the dblclick event of selected elements delegate() Add one or more event handlers to current, or future, specified child elements of the matching elements
die() Remove all event handlers added with the live() function

focus() - Triggers, or binds a function to the focus event of selected elements
focusin() - Binds a function to the focusin event of selected elements
focusout() - Binds a function to the focusout event of selected elements
hover() - Binds one or two functions to the hover event of selected elements
keydown() - Triggers, or binds a function to the keydown event of selected elements
keypress() - Triggers, or binds a function to the keypress event of selected elements
keyup() - Triggers, or binds a function to the keyup event of selected elements
live() - Add one or more event handlers to current, or future, matching elements
load() - Triggers, or binds a function to the load event of selected elements
mousedown() - Triggers, or binds a function to the mouse down event of selected elements
mouseenter() - Triggers, or binds a function to the mouse enter event of selected elements
mouseleave() - Triggers, or binds a function to the mouse leave event of selected elements
mousemove() - Triggers, or binds a function to the mouse move event of selected elements
mouseout() - Triggers, or binds a function to the mouse out event of selected elements
mouseover() - Triggers, or binds a function to the mouse over event of selected elements
mouseup() - Triggers, or binds a function to the mouse up event of selected elements
one() - Add one or more event handlers to matching elements. This handler can only be triggered once per element
ready() - Binds a function to the ready event of a document
(when an HTML document is ready to use)
resize() Triggers, or binds a function to the resize event of selected elements
scroll() Triggers, or binds a function to the scroll event of selected elements
select() Triggers, or binds a function to the select event of selected elements
submit() Triggers, or binds a function to the submit event of selected elements
toggle() Binds two or more functions to the toggle between for the click event for selected elements
trigger() Triggers all events bound to the selected elements
triggerHandler() Triggers all functions bound to a specified event for the selected elements
unbind() Remove an added event handler from selected elements
undelegate() Remove an event handler to selected elements, now or in the future
unload() Triggers, or binds a function to the unload event of selected elements

    Monday, January 3, 2011

    Generics in DotNet

    I always learn things by comparing to stuffs I already know!!!

    Generics mainly have 4 parts;

    1. List

    List is a better way of doing ArrayList. ArrayList is flexible enough to store any kind of data. It treats every entry as objects. This is not a good thing when it come to type conversiion both in terms of perdormance and operation. That's where the importance of type safe list comes in to the picture. When the collection is more type safe, it is less prone to errors.
    So List is a arrayList kind of collection where you are restricted to store only specific type, but unlimited.
    eg: List ids=new List;
    List ids=new List;

    2. Dictionary

    We can compare Dictionary to HashTable.