Udostępnij za pośrednictwem


Tworzenie dostawcy przyjęcia

W tym temacie opisano kroki wymagane do utworzenia dostawcy usług zamówień w rozwiązaniu Microsoft Dynamics 365 Intelligent Order Management.

Tworzenie nowej definicji dostawcy

Aby stworzyć nową definicję dostawcy, wykonaj następujące kroki.

  1. Przejdź do Dostawcy > Katalog.
  2. Wybierz Nowa definicja dostawcy.
  3. Dla Nazwy wyświetlanej wprowadź nazwę „IOMLabOrderIntakeProvider”.
  4. Dla Nazwa logiczna wprowadź nazwę „msdyn_IOMLabOrderIntakeProvider”.
  5. W przypadku logo wybierz pozycję „IOMLab.png”.
  6. Wprowadź "Order intake" w typu usługi.
  7. W Opis wprowadź tekst „IOM lab order intake provider”.
  8. Wybierz opcję Zapisz i zamknij.

Dodaj definicję dostawcy do rozwiązania

Aby dodać definicję dostawcy do rozwiązania, wykonaj następujące kroki.

  1. Przejdź do portalu usługi Power App Maker Portal i przejdź do nowo utworzonego rozwiązania IOMLabProviders.
  2. Wybierz Dodaj istniejące > Definicja dostawcy IOM.
  3. Wybierz IOMLabOrderIntakeProvider, a następnie wybierz Dodaj i dodaj je do rozwiązania.

Dodaj transformację do definicji dostawcy

Aby dodać transformację do definicji dostawcy, wykonaj następujące kroki.

  1. Przejdź do Dostawcy > Katalog.
  2. Wybierz nowo utworzoną pozycję IOMLabOrderIntakeProvider.
  3. W menu wybierz pozycję Edytuj.
  4. Wybierz kartę Przekształcenia.
  5. Wybierz Przekształcenie definicji dostawcy IOM.
  6. Dla Nazwy wyświetlanej wprowadź nazwę „IOMLab Order to Dataverse Order”.
  7. Dla Nazwa logiczna wprowadź nazwę „msdyn_IOMLabOrderIntake_Order”.
  8. W przypadku definicji dostawcy wprowadź lub wybierz pozycję IOMLabOrderInvidProvider.
  9. Dla Nazwy wyświetlanej wprowadź nazwę „IOMLabOrderIntakeProvider”.
  10. Dla nazwa obiektu docelowego wpisz "Dataverse Order".
  11. W przypadku przekształcenia wklej do następującego kodu zapytania M:
shared ImportMappingKey = [
    account = {
			[
				ExternalRecordKey = [ProviderName = "IOMLabOrderIntakeProvider"],
				SelectedFields = {"accountid"}
			]
    },
		pricelevel = {
			[
				ExternalRecordKey = [ProviderName = "IOMLabOrderIntakeProvider"],
				SelectedFields = {"pricelevelid"}
			]
    },
		product = List.Distinct(List.Transform(Source[orderdetails], each
			[
				ExternalRecordKey = [sku = _[sku]],
				SelectedFields = {"productid"}
			])),
		uom = List.Distinct(List.Transform(Source[orderdetails], each
			[
				ExternalRecordKey = [unit = _[unit]],
				SelectedFields = {"uomid"}
			]))
];
shared TransformSourceData =
let
	orderProducts = Source[orderdetails],
	account = IOM.MapRecord(IOM.MappingTables[account], [ProviderName = "IOMLabOrderIntakeProvider"]),
	pricelevel = IOM.MapRecord(IOM.MappingTables[pricelevel], [ProviderName = "IOMLabOrderIntakeProvider"]),
			
	orderheader = Record.FromTable
					(
						Table.SelectRows
						(
							Record.ToTable
							(
								[
									ordernumber = Text.From(Source[ordernumber]),
									name = ordernumber,
									#"customerid_account@odata.bind" = "/accounts(" & Text.From(account[accountid]) & ")",
									#"pricelevelid@odata.bind" = "/pricelevels(" & Text.From(pricelevel[pricelevelid]) & ")",
									billto_city = Record.FieldOrDefault(Source, "billtocity"),
									billto_stateorprovince = Record.FieldOrDefault(Source, "billtostateorprovince"),
									billto_country = Record.FieldOrDefault(Source, "billtocountry"),
									billto_postalcode = Record.FieldOrDefault(Source, "billtozip"),
									shipto_city = Record.FieldOrDefault(Source, "shiptocity"),
									shipto_stateorprovince = Record.FieldOrDefault(Source, "shiptostateorprovince"),
									shipto_country = Record.FieldOrDefault(Source, "shiptocountry"),
									shipto_postalcode = Record.FieldOrDefault(Source, "shiptozip")
								]
							), each [Value] <> null
						)
					),

	orderlines = List.Transform(orderProducts, each
						Record.FromTable
						(
							Table.SelectRows
							(
								Record.ToTable
								(
									[
										ispriceoverridden = true,
										#"productid@odata.bind" = "/products(" & IOM.MapRecord(IOM.MappingTables[product], [sku = Record.FieldOrDefault(_, "sku")])[productid] & ")",
										#"uomid@odata.bind" = "/uoms(" & IOM.MapRecord(IOM.MappingTables[uom], [unit = Record.FieldOrDefault(_, "unit")])[uomid] & ")",
										quantity = [quantity],
										shipto_name = Record.FieldOrDefault(orderheader, "shipto_name"),
										shipto_contactname = Record.FieldOrDefault(orderheader, "shipto_contactname"),
										shipto_line1 = Record.FieldOrDefault(orderheader, "shipto_line1"),
										shipto_line2 = Record.FieldOrDefault(orderheader, "shipto_line2"),
										shipto_line3 = Record.FieldOrDefault(orderheader, "shipto_line3"),
										shipto_city = Record.FieldOrDefault(orderheader, "shipto_city"),
										shipto_stateorprovince = Record.FieldOrDefault(orderheader, "shipto_stateorprovince"),
										shipto_country = Record.FieldOrDefault(orderheader, "shipto_country"),
										shipto_postalcode = Record.FieldOrDefault(orderheader, "shipto_postalcode"),
										shipto_telephone = Record.FieldOrDefault(orderheader, "shipto_telephone")
									]
								), each [Value] <> null
							)
						)
					),

	salesorder = Record.AddField(orderheader, "order_details", orderlines)
in Text.FromBinary(Json.FromValue(salesorder));
  1. W przypadku typu źródła przekształcenia wprowadź wartość „JsonPayload”.
  2. Wybierz opcję Zapisz.
  3. Utwórz plik JSON, wklej do poniższego kodu i zapisz go.
{
  "ordernumber": "IOMLabOrder001",
  "shiptocity": "BELLEVUE",
  "shiptostateorprovince": "WA",
  "shiptocountry": "US",
  "shiptozip": "98007",
  "billtocity": "BELLEVUE",
  "billtostateorprovince": "WA",
  "billtocountry": "US",
  "billtozip": "98007",
  "orderdetails": [
    {
      "sku": "883988211855",
      "unit": "each",
      "quantity": 11
    }
  ]
} 

  1. Obok pola Przykładowe dane wybierz pozycję Wybierz plik i przekaż utworzony plik JSON.
  2. Wybierz opcję Zapisz i zamknij.

Dodaj transformację definicji dostawcy do rozwiązania

Aby dodać definicję dostawcy do rozwiązania, wykonaj następujące kroki.

  1. Przejdź do portalu usługi Power App Maker Portal i przejdź do nowo utworzonego rozwiązania IOMLabProviders.
  2. Wybierz Dodaj istniejące > Parametr definicji dostawcy IOM.
  3. Wybierz IOMLab Order to Dataverse Order, a następnie wybierz Dodaj i dodaj je do rozwiązania.

Twórz Program obsługi komunikatów dostawcy

Aby utworzyć nowe rozwiązanie dla komunikacji, wykonaj następujące kroki.

  1. Przejdź do portalu usługi Power App Maker Portal i przejdź do rozwiązania i otwórz Domyślne rozwiązanie.

  2. Wybierz pozycję Nowy.

  3. Wybierz przepływ w chmurze, a następnie nadaj nazwę „Program obsługi żądań przetwarzania komunikatów zamowieniu IOM”.

  4. Wybierz typ wyzwalacza jako Outlook.com – gdy pojawi się nowy adres e-mail (V2), a następnie zaloguj się przy użyciu outlook.com konta.

  5. Dla folderu wybierz pozycję Skrzynka odbiorcza.

  6. W przypadku opcji Do wybierz adresy e-mail adresatów rozdzielone średnikami.

  7. W przypadku opcji CC wybierz adresy e-mail adresatów rozdzielone średnikami.

  8. W przypadku opcji CC wybierz adresy e-mail adresatów rozdzielone średnikami.

  9. W przypadku opcji OD wybierz adresy e-mail nadawców rozdzielone średnikami.

  10. Aby dołączyć załączniki, wybierz opcję Tak.

  11. Dla filtru tematu wybierz pozycję IOMLabOrderIntakeOrder.

  12. Aby uzyskać ważność, wybierz opcję Any.

  13. W przypadku opcji Tylko z załącznikiem wybierz opcję Tak.

    Wyzwalacz programu Outlook)

  14. Wybierz pozycję Nowy krok i dodaj pozycję Parse JSON.

  15. W przypadku zawartości wklej do następującego kodu:

    {
    "ProviderId": "00000000-0000-0000-0000-000000000000"
    }
    
  16. Wklej bezpośrednio do następującego przykładowego kodu schematu:

    {
      "type": "object",
      "properties": {
        "ProviderId": {
          "type": "string"
        }
      }
    }
    
  17. Wybierz opcję Gotowe.

  18. Kliknij przycisk wielokropka(„...”) i wybierz polecenie Zmień nazwę.

  19. Zmień nazwę akcji „Właściwości systemu IOM”.

  20. Wybierz opcję Zapisz.

    Działanie właściwości systemowych)

  21. Wybierz nowy krok, dodaj akcję Parse JSON i zmień nazwę na „Inicjuj zmienne dostawcy”.

  22. W przypadku zawartości wklej do następującego kodu:

    {
      "SourceObjectName": "IOMLabOrderIntakeProvider",
      "DestinationObjectName": "Dataverse Order"
    }
    
  23. Wybierz opcję Zapisz.

  24. Wybierz pozycję Nowy krok, dodaj akcję Inicjuj zmienną i zmień nazwę na „Inicjuj wynik wykonywania przetwarzania”.

  25. Dla Nazwa wprowadź nazwę „ExecutionResult”.

  26. Dla opcji Typ wybierz wartość Boolean.

  27. Wybierz wartość jako true.

  28. Wybierz opcję Zapisz.

    Zaiicjuj wynik wykonywania przetwarzania

  29. Wybierz pozycję Nowy krok, dodaj zakres i zmień nazwę na „Spróbuj”.

  30. W zakresie prób wybierz pozycję Dodaj akcję.

  31. Dodaj „wykonywanie niezwiązanej akcji” Dataverse z łącznika i zmień jej nazwę „Potwierdzanie komunikatu dostawcy w operacji IOM”.

  32. W przypadku nazwy akcji wprowadź nazwę „msdyn_CreateProviderMessageRequestExecution”.

  33. Dla wartości PowerAutomateWorkflowId wprowadź workflow()['tags']['xrmWorkflowId'] w wyrażeniu.

  34. Dla PowerAutomateRunId wprowadź workflow()['run']?['name'] w wyrażeniu.

  35. Dla ProviderExternalRequestId wprowadź guid() w wyrażeniu.

  36. Wybierz opcję Zapisz.

    Potwierdzenie komunikatu dostawcy

  37. Wybierz opcję Dodaj akcję, a następnie dodaj opcję Zastosuj do każdej kontrolki .

  38. Aby wybrać dane wyjściowe z poprzednich kroków, wybierz pozycję Załączniki.

    Zastosuj do każdego formantu

  39. Wybierz opcję Dodaj akcję w obrębie opcji Zastosuj do każdej pętli, dodaj opcję Uruchom przepływ podrzędny z łącznika przepływu i zmień jej nazwę „Przekształć wiadomość w Power Query trybie online”.

  40. Wybierz podrzędny dostawca IOM przepływu.

  41. Dla identyfikatora dostawcy wybierz zmienną ProviderId .

  42. W przypadku pola Nazwa obiektu źródłowego wybierz zmienną SourceObjectName .

  43. W Nazwa obiektu docelowego obiektu źródłowego wybierz zmienną DestinationObjectName .

  44. Dla Payload wprowadź decodeBase64(items('Apply_to_each')?['ContentBytes']) w wyrażeniu.

  45. Wybierz opcję Zapisz.

    Przekształć wiadomość za pomocą Power Query

  46. Po kroku przekształcenia wybierz opcję Dodaj akcję,dodaj polecenie Uruchom przepływ podrzędny z łącznika przepływu i zmień jego nazwę „ Utwórz zamówienie”.

  47. W przypadku przepływu podrzędnego wprowadź nazwę Tworzenie zamówienia sprzedaży dla IOM.

  48. Dla Payload wprowadź string(json(outputs('Transform_Message_with_Power_Query_Online')?['Body']?['result'])?[0][0]) w wyrażeniu.

  49. Wybierz opcję Zapisz.

    Tworzenie zamówienia

  50. Zwiń zakres próby , wybierając jego pasek tytułu.

  51. Wybierz nowy krok i dodaj inny zakres o nazwie „Wychwyć”.

  52. W przypadku zakresu Wychwyć wybierz wielokropek (”...”), wybierz opcję Konfiguruj uruchamianie po.

  53. Zaznacz pole nie powiodło się i czas skończył się, a następnie wybierz opcję Gotowe.

    Konfiguruj uruchamianie po

  54. W zakresie wychwytywania wybierz opcję Dodaj akcję i dodaj akcję Ustaw zmienną, a następnie zmień jej nazwę” i „Ustaw wynik wykonania jako niepowodzenie”.

  55. Dla Nazwa wprowadź nazwę „Executionresult”.

  56. Dla wartość wybierz False.

  57. Wybierz opcję Zapisz.

    Akcja ustawiania zmiennej

  58. Zwiń zakres wyłapywania , wybierając jego pasek tytułu.

  59. Wybierz nowy krok i dodaj inny zakres o nazwie „W końcu”.

  60. W przypadku zakresu w końcu wybierz wielokropek (”...”), wybierz opcję Konfiguruj uruchamianie po.

  61. Zaznacz pole powiodło się, nie powiodło się i pominięto i czas się skończył, a następnie wybierz opcję Gotowe.

    Konfiguruj uruchamianie po (Ostatecznie zakres)

  62. W zakresie Na koniec wybierz opcję Dodaj akcję, dodaj akcję Wykonywanie niezwiązanej akcji i zmień jej nazwę „Zapisz wynik wykonania żądania komunikatu dostawcy”.

  63. W przypadku nazwy akcji wprowadź nazwę „msdyn_UpdateProviderMessageRequestStatus”.

  64. Dla ProviderMessageRequestExecutionId wpisz @outputs('Acknowledge_the_Provider_Message_in_IOM')?["body/ProviderMessageRequestExecutionId'].

  65. Wybierz opcję Zapisz.

    Zapisanie wyniku wykonania żądania komunikatu dostawcy

Dodaj definicję logiczną definicji dostawcy do definicji dostawcy

Aby dodać definicję logiczną dostawcy do definicji dostawcy, wykonaj następujące kroki.

  1. W Intelligent Order Management przejdź do Dostawcy > Katalog.
  2. Wybierz nowo utworzoną pozycję IOMLabOrderIntakeProvider.
  3. W menu wybierz pozycję Edytuj.
  4. Wybierz kartę Definicje logiczne.
  5. Wybierz + Nowa definicja logiczna dostawcy IOM.
  6. Aby uzyskać nazwę wyświetlaną, wprowadź wartość „Obsługa żądań komunikatów zakańcania zamówień IOM”.
  7. Dla Nazwa logiczna wprowadź nazwę „msdyn_LabOrderIntakeMessageRequestHandler”.
  8. W przypadku definicji dostawcy wprowadź lub wybierz pozycję „IOMLabOrderInvidProvider”.
  9. W przypadku typu logiki wprowadź wartość „Provide Message Handler” (Podaj program obsługi komunikatów).
  10. Dla Nazwa przepływu, wprowadź wartość „Obsługa żądań komunikatów zakańczania zamówień IOM”.
  11. W Limit czasu w minutach wprowadź „2”.
  12. W przypadku prób maksymalnej próby wprowadź wartość „3”.
  13. Dla Opis, wprowadź wartość „Obsługa żądań komunikatów zakańcania zamówień IOM”.
  14. Wybierz opcję Zapisz. Generuje to reprezentację JSON przepływu chmury message handler i wypełnia pole Danych klienta.
  15. Wybierz opcję Zapisz i zamknij.
  16. Wybierz połączenia. Na liście powinny być wyświetlane Microsoft Dataverse i Outlook.com odwołania do połączeń.

Banknot

Jeśli widzisz definicje referencyjne połączeń inne niż Microsoft Dataverse i Outlook.com, oznacza to, że używasz więcej niż jednego referencyjnego połączenia Dataverse w przepływie obsługi komunikatów przyjmowania zamówień . Aby rozwiązać ten problem, przejdź do przepływu i upewnij się, że wszystkie akcje Dataverse używa tego samego odwołania do połączenia.

Dodaj definicję logiki definicji dostawcy do rozwiązania IOMLabProviders

Aby dodać definicję logiczną dostawcy do rozwiązania IOMLabProviders, wykonaj następujące kroki.

  1. Przejdź do portalu usługi Power App Maker Portal i przejdź do nowo utworzonego rozwiązania IOMLabProviders.
  2. Wybierz Dodaj istniejące > + Nowa definicja logiczna dostawcy IOM.
  3. Wybierz IOM Lab Order Intake Message Request Handler, a następnie wybierz Dodaj i dodaj je do rozwiązania.

Dodaj odniesienia do połączenia definicji dostawcy do rozwiązania IOMLabProviders

Aby dodać odwołania do połączeń definicji dostawcy do rozwiązania IOMLabProviders, wykonaj następujące kroki.

  1. Przejdź do portalu usługi Power App Maker Portal i przejdź do nowo utworzonego rozwiązania IOMLabProviders.
  2. Wybierz Dodaj istniejące > Odniesienie do połączenia z definicją dostawcy IOM.
  3. Zaznacz zarówno Microsoft Dataverse odwołania Outlook.com, jak i odwołania do połączeń definicji, a następnie wybierz polecenie Dodaj , aby dodać je do rozwiązania.

Następny krok szybkiego rozpoczęcia: Tworzenie dostawcy realizacji.