Quantcast
Channel: TechNet Blogs
Viewing all 36188 articles
Browse latest View live

SQL Azure DW – What is it? How it works?

$
0
0

Azure DW what is it? Is it the same as SQL Azure but bigger?

No. It is kind of…different.

It is a full Cloud Service from Microsoft in the Microsoft Cloud (PaaS), multi-tenant, cloud-based data warehouse ‘Platform as a Service’ offering which elastically scales on demand.

Separates storage and compute for elastic scale requirements regardless of data volume.

You could pauseresume approach for ad-hoc workloads. Summarizing: Azure DW or Cloud Data Warehouse it is a high-end massively parallel processing (MPP) data warehousing, ideal for high-scale or high-performance data marts and EDWs in the Cloud.

So, we are talking about massively parallel processing. How it works?

It is “divide to conquer”.  Azure DW relays in nodes and CPUs, instead in only CPUs to process a task. Our classical SQL divides a task in different CPUs, that is parallel processing. Azure DW process a task in CPUs running in different nodes (computers).

In order to achieve this distributed architecture DW has:

Control node: The Control node manages and optimizes queries. It is the front end that interacts with all applications and connections.

Compute nodes: The Compute nodes serve as the power behind SQL Data Warehouse. They are SQL Databases that store your data and process your query

Storage: Your data is stored in Azure Blob storage. When Compute nodes interact with your data, they write and read directly to and from blob storage

(https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-overview-what-is)

In terms of query that represents segmented data and consequently data movements (DMS).  But what that means?

About SQL DW it is important to have in mind that the data will be spread across node according to distribution columns. So, choosing a good distribution column is an important aspect of achieving storage efficiency and highly performant queries.

Again, as the data is distributed against the nodes, SQL DW can perform some data movement to return the result set, the one responsible for that is the Data Movement Service. Data movement is the way which a query plan operation moves data among the nodes. When this happen, data is always moved into temporary tables. Moving data ensures that data exists on the correct nodes at the correct time to run queries.

Ok. Distribution columns??  What it means?

So first let’s make it clear some key concepts:

Distribution columns:

Behind the scenes, SQL Data Warehouse divides your data into 60 databases. Each individual database is referred to as a distribution. When data is loaded into each table, SQL Data Warehouse has to know how to divide your data across these 60 distributions. (https://docs.microsoft.com/en-gb/azure/sql-data-warehouse/sql-data-warehouse-tables-distribute)

So the column choose as the distribution key will be use to distribute the data across nodes.

We have two types of distribution:

  1. Round robin which distribute data evenly but randomly. As the it sounds round robin will work distributing the data in round robin fashion, when the data is loaded, each row is simply sent to the next distribution. For this reason, Round-Robin tables often make good loading targets, but maybe not so good for queries, requiring data movement.
  2. Hash Distributed which distributes data based on hashing values from a single column. Hash distributed tables are tables which are divided between the distributed databases using a hashing algorithm on a single column which you select. The hashing algorithm and resulting distribution is deterministic.

Note: to simulate this demo, you will need: an azure account, a SQL DW DB and SSMS studio connected to your DW DB.

More details:

SSMS and azure DB: https://docs.microsoft.com/en-us/azure/sql-database/sql-database-connect-query-ssms

Create SQL DW Azure: https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-get-started-provision

T-SQL Code demo – Creating a table using Hash and Round Robin.

Hash

[sql]

CREATE TABLE Hash_example

(

id int NOT NULL,

lastName varchar(20),

Postcode varchar(6)

)

WITH

(

DISTRIBUTION = HASH ( id ) --hash distribution. Note only one column can be used

CLUSTERED COLUMNSTORE INDEX

)

;

[/sql]

Round Robin

[sql]

CREATE TABLE RoundRobin_example

(

id int NOT NULL,

lastName varchar(20),

Postcode varchar(6)

)

WITH ( CLUSTERED COLUMNSTORE INDEX );

[/sql]

Why that matters? If you join two tables using different distributed columns it could lead to a data movement and that could lead to performance issues.

Speaking in data movement...Some types of Data Movements:

BROADCAST_MOVE - This operation is frequently used when running a distribution incompatible join.

To perform this operation, each distribution broadcasts its rows to all other Compute nodes. The result is that each Compute node uses its own rows plus all the rows it receives from the other Compute nodes to create a replicated table.

SHUFFLE_MOVE - Redistributes a distributed table. The redistributed table has a different distribution column than the original distributed table. This might be used to when running incompatible joins or incompatible aggregations.

To perform this operation, SQL DW will moves each row to the correct Compute node according to distribution column of the destination table. Rows that are already stored on the correct Compute node are not copied during this operation.

 

How to identify a data movement? Look at the execution plan, use Explain.

Example:

[sql]

EXPLAIN --show the cost of the execution plan

SELECT COUNT(*)

FROM dbo.Hash_example HS

INNER JOIN RoundRobin_example RR

on HS.id = RR.id

[/sql]

For the example above, I used Explain. Explain returns the query plan for a SQL Data Warehouse SQL statement without running the statement. In this case I have 2 tables distributed on the same column with the same datatype, so it seems everything will work as it should, but if I check the XML result for my execution plan I will realize Data movement service (DMS) had to move the data to a temporary place so that means a distribution enters in the scene. But which distribution and why? To discover the distribution, look the operation type inside of the XML ( more details, figure 1), and the reason is because I am using round robin in one of the tables and hash in the other. Remember round robin distribution in the table occurs just as the name says in a round robin fashion, so it was chosen to perform some data movement to execute the join between the columns. When you choose to use Round Robin increases the like hood of  data movement.

Check more about explain: (https://docs.microsoft.com/en-us/sql/t-sql/queries/explain-transact-sql)

Between other things what is most notable in the explain result for the query mentioned is the data movement and the query cost.

Check the results as follow:

Figure 1: Explain Query DW

Note: The data was moved to a temporary place (TEMP_ID_11) to execute the query, that means SQL has to distributed the data in order to return the result set. The operation chosen to perform this distribution  was Shuffle move, you can check this inside of the operation type in the XML result, above. The number of distribution are 60.  Also, note the cost for this query and operations required can be checked by the explain result.

Next post we will discuss  more reasons for data movements and some possible solutions.

 

Liliam Leme

UK Data Platform PFE

 

 

 

 

 

 


OneDrive のバージョン履歴機能を拡張しあらゆる種類のファイルをサポート

$
0
0

(この記事は 2017 7 19 日に Office Blogs に投稿された記事 Expanding OneDrive version history support to all file types の翻訳です。最新情報については、翻訳元の記事をご参照ください。)

OneDrive のバージョン履歴機能が拡張され、OneDrive の個人アカウントにおけるあらゆる種類のファイルがサポートされるようになります。これは、ユーザーの皆様から多くのご要望 (英語) を頂いていた機能です。OneDrive チームは、皆様が生産性の向上に専念できるように支援し、編集ミスを気にせず他のユーザーと共同編集が行えるように日々取り組んでいます。

今回のバージョン履歴の機能強化により、OneDrive に格納されているすべてのファイルの過去のバージョンを閲覧、復元できるようになります。以前は Office ファイルのみサポートされていましたが、今後はあらゆる種類のファイルでこの機能が利用できるようになります。PDF や CAD ファイル、さらには写真や動画などを誤って編集し上書き保存してしまっても、いつでも過去のバージョンを復元したりダウンロードしたりすることができます。過去のバージョンのファイルは 30 日間保存されます。バージョン履歴の機能強化は既にロールアウトが始まっており、今夏にはすべてのユーザーにご利用いただけるようになる予定です。

OneDrive のバージョン履歴機能を使用する

バージョン履歴機能は簡単に使用できます。OneDrive.com に移動し、過去のバージョンを復元または閲覧したいファイルを右クリックして、[Version history] をクリックするだけです。

Image of the OneDrive Documents window with the menu displayed and Version History highlighted for selection.

バージョン履歴ウィンドウには、過去のバージョンの更新日時、編集者、サイズが表示されます。

Image of window displaying the version history of a selected file.

目的のバージョンを選択し、[Open File] をクリックして閲覧するか、[Restore] をクリックして現在のバージョンと置き換えます。

Image of the version history for a selected file and the Restore option is highlighted for selection.

この機能は、OneDrive でユーザーのデータを確実に保護するための、複数ある措置の 1 つです。

バージョン履歴の新しいエクスペリエンスについての皆様のご意見や、OneDrive の改善に関するフィードバックを OneDrive の UserVoice (英語) までぜひお寄せください。

— OneDrive チーム

※ 本情報の内容 (添付文書、リンク先などを含む) は、作成日時点でのものであり、予告なく変更される場合があります。

Free books to enjoy including Azure and Office 365

Top 5 .NET Exceptions

$
0
0

By Liam Westley, Application Architect at Huddle

When you use the word Exception it always sounds scary, but exceptions in .NET are far from scary and are much more useful than the old days of returning error codes and error strings.  There’s no excuse for your methods to provide return values which hide the details of why something went wrong.

The myth that exceptions are slow to throw and hog memory have long been debunked.  If they aren’t used as a standard control flow (see item 2 below) then they will only occur rarely and provide vital information on the state of your application.

Here are my top five tips for handling .NET Exceptions.

1. Maintain your stack trace

When you first start programming in .NET you might think that you catch the exception, try some stuff but rethrow that exception if you couldn’t handle it.  Or, you may have defined your own exception class.  It might have looked like the following code.

In both these cases, you will find that the stack trace provided with your exception will go no further down the call stack than the method PartialStackTrace.

private double PartialStackTrace()
{
  try
  {
       return DivideANumber(1, 0);
  }
  catch (Exception ex)
  {
       throw ex;
  }
}

OR

private double PartialStackTrace()
{
  try
  {
       return DivideANumber(1, 0);
  }
  catch (Exception ex)
  {
       throw new MyAppException(“Ooops!”);
  }
}

You really would like a full stack trace, that reveals that the problem exists in DivideANumber (or further down the call stack).

If you are just re-throwing the exception use throw by itself, and the full stack trace is preserved.

If you define your own exception class, provide the exception you just caught as the InnerException in the constructor.  Job done!

private double FullStackTrace()
{
  try
  {
       return DivideANumber(1, 0);
  }
  catch (Exception ex)
  {
       throw;
  }
}

OR

private double FullStackTrace()
{
  try
  {
       return DivideANumber(1, 0);
  }
  catch (Exception ex)
  {
       throw new MyAppException(“Ooops!”, ex);
  }
}

See also: https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2200-rethrow-to-preserve-stack-details.

2. Keep exceptions exceptional…

This sounds a bit trite, but sometimes you won’t need exceptions as you know there will be times that you will receive data or be in a situation where an exception might occur, and you know how to handle it.

As an example, it is trivial to verify that a key exists in a dictionary prior to attempting to access a value, and save having to wrap dictionary access in a try … catch block.

var alphabet = new Dictionary<int, string>() { { 1, "A" }, { 2, "B" } };

// throws KeyNotFoundException

try
{
    Console.WriteLine($"27th letter of alphabet {alphabet[27]}");
}
catch (KeyNotFoundException kex)
{
    Console.WriteLine("27th letter of alphabet : <not present>");
}

// check first, no try ... catch required
var letter = alphabet.ContainsKey(27) ? alphabet[27] : "<not present>";
Console.WriteLine($"27th letter of alphabet : { letter }");k

Similarly, you might want to check for the existence of a file with the same name before an attempt to copying a new file.  This could be gracefully handled by changing the resulting file name and providing the new file name back as a result.

3. Avoid generic, catch-all exception handling

Not only should you not throw exceptions for conditions that are expected to occur regularly, you should also always aim to catch specific exceptions, rather than generic exceptions.  This has become finer grained in C# 6 as it supports filtering using catch ... when and supplying a suitable predicate.

// handle specific exception differently

try
{
    double result = DivideByZeroCheckForSpecificException();
    Console.WriteLine($"Divide by zero results : {result}n");
}
catch (DivideByZeroException dex)
{
    Console.WriteLine("Divide by zero results : <cannot divide by 0>n");
}
catch (Exception ex)
{
    Console.WriteLine("Unknown exception : nn" + ex.ToString() + "n");
}

// handle exception using a catch ... when predicate

try
{
    double result = DivideByZeroCheckExceptionPredicate();
    Console.WriteLine($"Divide by zero results : {result}");
}
catch (Exception ex) when (ex.InnerException != null)
{
    Console.WriteLine("An InnerException exists : nn" + ex.ToString() + "n");
}

4. Async and exception handling

The world of async has given us a few more things to think about regarding exceptions.  The first is that you will be expected to handle the AggregateException much more often than you may have done previously.  This wrapper could be wrapping several exceptions, or just a single exception.  You have to examine the InnerExceptions property to see if there are underlying exceptions which you could handle.

It should also be noted that methods which are decorated with async will not throw exceptions unless you await them.  This can be easy to miss when creating unit tests with mocks and stubs, and can lead to much frustration as tests suddenly fail due to exceptions not being thrown and handled as expected.

internal static async Task ThrowAnException()
{
    throw new Exception("Throwing from an async decorated method.");
}
private static async Task TestAsyncExceptions()
{

  // No exception will be thrown, we omitted await

  try
  {
    ThrowAnException();
    Console.WriteLine("No exception thrown.");
  }
  catch (Exception ex)
  {
    Console.WriteLine("Exception thrown : nn" + ex.ToString() + "n");
  }

  // Exception will be thrown because we have used await

  try
  {
    await ThrowAnException();
    Console.WriteLine("No exception thrown.");
  }
  catch (Exception ex)
  {
    Console.WriteLine("Exception thrown : nn" + ex.ToString() + "n");
  }
}

5. Don’t rely on exception message content, it could be localised

Even when you do capture on specific exception types, you might find that the exception is ambiguous and doesn’t really inform you of the underlying issue.  It can be tempting to check for a given exception message to really confirm that the exception is something you think you can handle.

try
{ 
  getDocument = DocStore.SingleOrDefault(d => d.SelfLink = doc.SelfLink);
}
catch (System.InvalidOperationException ex)
{   
  if (ex.Message == “Sequence contains more than one matching element”) 
  {    
    CleanUpDuplicates(doc.SelfLink); 
  } 
  else 
  {   
   throw; 
  }
}

The above example works fine if the system on which your software runs uses a English language locale, but if it were, say based in Norway the text ‘Sequence contains more than one matching element” becomes

Sekvensen inneholder mer enn ett samsvarende element

A good solution to this issue is to handle the specific exception but validate that the issue really is more than one item being found.  By counting how many items might be present that match the predicate, we only call CleanUpDuplicates if we actually find duplicates, otherwise we can happily throw as the exception is unexpected.

Summary

So that is my top five tips for handling .NET Exceptions.  I hope you can embrace exceptions and the rich data they provide when trying to debug your applications. With libraries such as Polly utilising your exceptions to implement patterns such as Retry and Circuit Breaker, there’s even more reasons to use exceptions in your code to save time and effort.

Biography

Liam Westley is an ex Microsoft MVP and Application Architect at Huddle where he works with some of the best .NET developers and UX designers to deliver world class collaboration software. He quite likes working just on the edge of The City as there is some fantastic food and coffee to be had within a few minutes walk.

Liam has worked for chellomedia, GMTV, BSkyB, QVC UK and chellomedia. In his time he created the first in house weather system for Sky News using Visual Basic 1.0, acted as architect for two general election systems, project managed the launch of the GMTV web site, was key to delivering the first interactive television chat service in the UK for BSkyB and helped launch the first live shopping channels in the Netherlands.

Liam has a blog at https://blog.liamwestley.co.uk and https://medium.com/@liam.westley and can be found on twitter at @westleyl.

July 2017 Exchange Security Updates–Have You Updated?

$
0
0

Patch Tuesday this month featured updates to address security issues in Exchange 2010, 2013 and 2016.   Two weeks ago today, July 11th heralded the arrival of Rollup Update Rollup 18 (RU18) for Exchange Server 2010 Service Pack 3 along with updates for Exchange 2013 and 2016.

Exchange 2010 SP3 RU18 is the latest rollup of customer fixes currently available for Exchange Server 2010.  All updates, both security and product fixes, are delivered via a RU for Exchange 2010.  This means that if you want to install a security fix for Exchange 2010 you must install it via a RU.

Exchange 2013 and 2016 have a different servicing strategy, where security updates can be decoupled from the regular product updates.  Exchange 2013 and 2016 utilise Cumulative Updates (CUs) rather than the Rollup Updates (RU/UR) which were used previously.

For a reference point Exchange 2013 CU17 and Exchange 2016 CU6 were previously released in June 2017.

Security updates were released for Exchange 2010, 2013 and Exchange 2016.  The released updates are covered in KB 4018588.  In addition the Microsoft Security Update Guide also provides a mechanism to search and filter on security updates.  Filtering the July 2017 Exchange updates in the Microsoft Security Update Guide shows the below:

July 2017 Exchange 200, 2013 and Exchange 2016 Security Updates

Drilling into the table shows that updates are available for all supported versions of Exchange.  Exchange 2007 exited out of extended support in April 2017, thus is not listed in the table.

Focussed View of July 2017 Exchange Security Updates

It is worth drilling into the different versions of Exchange to review how the security fixes are delivered and thus how they are to be applied.

Exchange 2010

Exchange 2010 is serviced by releasing a new Rollup Update (RU).   These security fixes are delivered in Exchange 2010 SP3 RU18.

Download Exchange 2010 SP3 RU18

Please see the installation notes at the bottom of this post.

Exchange 2013

Separate security updates are available for Exchange 2013 SP1 (CU4) and Exchange 2013 CU16.  If you are running one of these CUs then you can download and install the security update from KB 4018588.  In reality though CU4 is a very dated release and you really should be on a current build of Exchange.

Security Update for Exchange 2013 CU16

Exchange 2013 CU17 already includes these security fixes.

For all other Exchange 2013 CUs the security update is not available.  In order to apply the security update then you must update to a current CU.

Exchange 2016

A separate security update is available for Exchange 2016 CU5.  If you are running CU5 then you can download and install the security update from KB 4018588.

Security Update for Exchange 2016 CU5

Exchange 2016 CU6 already includes these security fixes.

For all other Exchange 2016 CUs the security update is not available.  In order to apply the update then you must update to a current CU.

Cheers,

Rhoderick

July 2017 release – Dynamics AX 2012 R3

$
0
0

The July release for Dynamics AX 2012 R3 version is now available in LCS on the updates tile inside your R3 project. This update represents a typical collection of smaller functional improvements and technical fixes. Bugs were fixed in all areas with enhancements found in Warehouse & Transportation, Retail, DIXF and Project Accounting. Please see the full list of hotfixes below to search for your specific issue newly included in this release. This release is a cumulative package including all other fixes released in the prior CU12 update. This release is intended to give visibility into fixes recently shipped for R3, including some features and design changes that are newly released in this month.

Here are a few details related to this release:
• Primary Build: 6.3.5000.6242
• Number of Application hotfixes: 111
• Number of Binary hotfixes: 31

Details of the install process can be found here:

What is included in this month’s release?

Design Change Requests, Feature Requests & RegFs

KB Details Description of issue or change request Description of enhancement
4032504 DIXF Generate XML Schema Definition (XSD) File: Add a setting to allow optional fields to be missing in the XML file The changes in the hotfix include the following:

The DIXF Service's DMFConfig.xml file has an "AllowMissingElementsInXsdForOptionalFields" new configuration option. When setting to true, optional fields will have elements in the XSD file set to minOccurs='0' and maxOccurs='1'. It means that the element doesn't have to exist in the XML file.This only applies to the XSD file.

DIXF will still not accept XML files with missing elements. This XSD file can be used to validate an XML file before including the missing elements.

 

4024615 Performance issue for the Retail Sales form when there are a large number of SQL records in the AX database. The changes in the fix address the issue by adding a button 'Search', and only execute query when this button is clicked.
4025460 Guided partial location item cycle count where you don't need to count the full content of location. The changes in the hotfix include adding support to do partial cycle counting:

Work line breaks are added to cycle counting work template and partial cycle counting work will be generated during cycle counting planning.

 

4026032 [Retail] When you try to add more than 50 fields to the receipt footer, you receive the following error message:

"Index was outside the bounds of the array."

The hotfix changes the maxNumberLabels as 100.

Fixes Released

KB Number Complete Feature Path Title
4032436 AX Retail The transactions on voucher XXXX do not balance as per date error when you run Post statement
4033001 AX Retail The shelf label quantity is the quantity being purchased instead of 1 when you print shelf label from Purchase order
4025768 AX RetailSolutionCall Center Total invoiced quantity does not show correct value on the Customer item statistics form (Call center)
4032643 AX RetailSolutionCall CenterCoupons The transactions on voucher xxx do not balance as per <Date> error you invoice sales order with pro-rated charges
4033981 AX RetailSolutionCall CenterCustomer service and inquiry The Price details form misses the "Trade agreements" and "Potential trade agreements" tabs when it's opened in the retail sales orders from Call center
4024661 AX RetailSolutionCustomers and loyalty Loyalty card balance is negative after you return original sales
4025859 AX RetailSolutionCustomers and loyaltyCustomers and Groups The customer was saved error when saving new customer in POS if number sequence for Location ID is Alpha Numeric
4025921 AX RetailSolutionFinancialsStatement Posting RetailTransactionId, RetailStoreId, RetailTerminalId and RetailCustTrans fields are empty in CustTrans table
4034022 AX RetailSolutionFinancialsStatement Posting Account number for transaction type Cost change variance does not exist error when you post Retail statement
4032208 AX RetailSolutionMerchandisingCatalog Management Hidden attributes like RetailAttributesGlobalLookup and RetailAttributesGlobalLookupPOSDisallowDiscount are assigned to Product
4034657 AX RetailSolutionMerchandisingProduct Enrichment and Product Details Pricing simulator doesn't display all the applied discounts in "Offer code"
4025525 AX RetailSolutionOrder management You cannot delete purchase order lines that are created by packages
4025196 AX RetailSolutionOrder managementBack Office (Cross-Channel) Fulfilment of Retail Store Customer Order It's not possible to pick up Customer order in MPOS when Delivery reminder  sales quantity is increased
4025327 AX RetailSolutionOrder managementBack Office (Cross-Channel) Fulfilment of Retail Store Customer Order No tax on customer order MPOS prepayment when "Sales tax on prepayment journal voucher" is activated in AR parameters
4025203 AX RetailSolutionServicingChannel DB (including Consolidated) Tender type description doesn't appear on the printed receipts after truncating the RETAILTRANSACTIONTABLEEX5 table
4025906 AX RetailSolutionStore operations and POS MPOS Transfer Order allows Receive now decimal quantity for items with UOM to be defined as Ea
4032160 AX RetailSolutionStore operations and POS The focus in EPOS isn't on the Search or Enter quantity box when you exit the pop-up menu
3158692 AX RetailSolutionStore operations and POSDaily Operations The print behavior of hardcoded receipts (such as X Report) is tied with template-based receipts
4034771 AX RetailSolutionStore operations and POSOffline Mode EPOS doesn't switch to Offline mode reliably after you deploy KB 4012952
4033777 AX RetailSolutionStore operations and POSOther Payments (Check, On-account etc) Private label card read leads to manual entry for credit cards on VeriFone device
4024775 AX RetailSolutionStore operations and POSSales, Returns and Other Transactions "An error occurred while saving the customer" error when you search a customer in POS
4025093 AX RetailSolutionStore operations and POSSales, Returns and Other Transactions MPOS always uses two decimal places when displaying quantity in cart
4025386 AX RetailSolutionStore operations and POSSales, Returns and Other Transactions Total discount calculates incorrect amount for items with a price embedded bar code when quantities is rounded in EPOS
4026031 AX RetailSolutionStore operations and POSSales, Returns and Other Transactions Tax amount is calculated incorrectly when price includes tax and returning transaction crossing stores
4032143 AX RetailSolutionStore operations and POSSales, Returns and Other Transactions MPOS stops responding when you add blocked customer to transaction from customer details
4032631 AX RetailSolutionStore operations and POSSales, Returns and Other Transactions You cannot enter a $0 starting amount
4033139 AX RetailSolutionStore operations and POSSales, Returns and Other Transactions You cannot recall the suspended transactions in EPOS when you use product variants with multiple bar codes per variant ID
4033561 AX RetailSolutionStore operations and POSSales, Returns and Other Transactions Return transaction for weighted item has incorrect amount
4025152 AXLAPAC localizationsIndia Fix for GST miscellaneous issues
4025602 AXLAPAC localizationsIndia India/IND: "Account number for transaction" error while posting invoice proposal
4033296 AXLAPAC localizationsJapan Japan/JPN: Allowable limit for accumulated depreciation (33) doesn't take amount memorandum price 1.00 yen at the end of final depreciation year
4025282 AXLEurope LocalizationsEastern EuropeCzech Republic Czech Republic/CZE: The "Date of VAT register" functionality doesn't work as expected with Credit limit feature even after hotfix 4013628 is installed
4032624 AXLEurope LocalizationsEastern EuropeCzech Republic Czech Republic/CZE: "Account number for transaction type Sales tax does not exist" error when you post an invoice with modified exchange rate for VAT
4032621 AXLEurope LocalizationsEastern EuropePoland Poland/POL: Credit limit considers advance invoice on the Customer balance form
4032142 AXLEurope LocalizationsFinland Finland/Fin: EU sales list-New VAT Recapitulative Statement report 2017 doesn't follow the provided data file specifications
4032358 AXLEurope LocalizationsGermany Germany/DEU: German sales tax payment cannot be submitted because of error code 070089007
4033723 AXLEurope LocalizationsGermany  Germany/DEU: SEPA CT/DD Vendor/Customer bank account setup without Swift code misses tags in XML
4014135 AXLEurope LocalizationsItaly Italy/ AX2012 R3 Italian sales tax payment report returns wrong Sales tax for the previous periods
4032622 AXLEurope LocalizationsRussian FederationAP AR Russia/RUS: Financial dimensions in the VAT posting are missing
4024541 AXLLATAM LocalizationsBrazil Brazil/BRA: NF-e: "347  Rejection: Informing IE" error when the IEST tag is incorrectly exported
4032623 AXLLATAM LocalizationsBrazil Brazil/BRA: The posted transaction has an amount of 0.00 if you manually adjust the ICMS tax amount for a Purchase order (fixed asset acquisition)
4023886 ClientDoc Handling Unable to upload large attachments from a SharePoint document library
4024117 ClientOffice Add-ins Denmark/DNK: The format of time columns is set to AM/PM when you use Export to Microsoft Excel
4025132 Developer and Partner ToolsDIXF "Opening balances" DIXF entity fails during copy data to target if Financial dimension based Advanced rules are in use in GL Account structure
4025920 Developer and Partner ToolsDIXF DIXF export does not work when conversions are configured at processing group level
4026035 Developer and Partner ToolsDIXF Subsequent batch jobs use the same job ID when using an ODBC connection to run a DIXF processing group in a recurring batch job
4032105 Developer and Partner ToolsDIXF XSD file has maxlength=0 for all string fields after you regenerate source mapping in DIXF
4032445 Developer and Partner ToolsDIXF Date type is exported as DateTime when you use DIXF to export a field of Date format
4032505 Developer and Partner ToolsDIXF DateTime types have incorrect pattern when you generate an XSD (XML Schema Definition) file through DIXF
4032506 Developer and Partner ToolsDIXF Only one entity element is allowed (Max one entity per XML file) when you generate an XSD (XML Schema Definition) file through DIXF
4025113 GFMAccounts PayableInvoice Journals Canceling voucher from invoice approval journal doesn't produce the correct 'storno' accounting entry
4025330 GFMAccounts PayableInvoicing Insufficient inventory transactions with status Received error when posting invoice with "" character in physical voucher
4025963 GFMAccounts PayableInvoicing Unable to see Invoice lines section in Matching Details screen with certain screen resolutions
4024400 GFMAccounts Receivable Duplicates in Settle open transactions form after creating a collection letter after upgrade to CU12
4025495 GFMAccounts Receivable "The expected type was str, but the encountered type was real" error when doing settlement and updating cash discount
4024595 GFMAccounts ReceivableCollectionsCollection Letter Collection letter code is not updated
4034761 GFMAccounts ReceivableFree Text InvoiceRecurring Recurrence ID isn't created/updated while you generate recurrence invoice for all the customers where one of the customer exceeded Billing end date
4022954 GFMCase Management "Field 'Case ID' must" error when changing the Description on a Collections case after the case has already been created
4025481 GFMCash ManagementBankBank Reconciliation You cannot run advance bank reconciliation matching rule in batch in Microsoft Dynamics AX 2012 R3
4033936 GFMCash ManagementBankBank Reconciliation Bank transactions marked as new don't take by default Offset account number from setup in Bank Statement
4025482 GFMExpense Management Users can submit the hotel expenses in Expense report without itemization
4033979 GFMExpense Management Expense report receipts are deleted unexpectedly from the Expenses App
4026027 GFMGeneral Ledger Error in ledger accruals when you use tax exempt in invoice and only partial amount is accrued
4024065 GFMGeneral LedgerChart of Accounts Austria/AUT: Austrian and German label for Asset in main account setup is incorrectly translated
4032664 GFMGeneral LedgerReports No grand total on report payments for different companies
4032780 GFMGeneral LedgerReports Ledger transaction list doesn't display tax code for zero based tax on cash discount
4033976 Public SectorAPInvoicing The field with ID '0' does not exist in table 'VendTrans' error when you post a Project Vendor Invoice with Billing classifications and auto settlement is turned on
4032178 Public SectorBudget Incorrect GBR relief amount for a canceled PO after it's partly received.
4033912 SCMInventory The Batch reservation form displays no records when serial number is below location and serial dimension is displayed
4019391 SCMInventory CostingCost ModuleInventory Closing "An unbalanced X++ TTSBEGIN/TTSCOMMIT pairs has been detected" error when you try to resume a previously failed Inventory recalculation
4033724 SCMInventory CostingCost ModuleInventory Closing Weighted average summary records aren't deleted by the cancellation of an inventory close if they've been updated by subsequent recalculations which are still active
4032367 SCMInventoryConsumer Goods DistributionCatch Weight Management Unable to post Picking list for full CW quantity after Packing slip cancelation
4032564 SCMInventoryInventory Management Counting sheet does not print LP dimension for an item
4033820 SCMInventoryQuality Management You cannot add different items after you apply any filter in the "Quality orders" form
4025158 SCMPlanning Refresh issue between released product item coverage user interface and reqitemtable
4032885 SCMPlanning Incorrect unit in Firm and Consolidate form
4019352 SCMPlanningMaster Planning Expired resource is incorrectly allocated by running Forecast scheduling
4024896 SCMPlanningPlanned Orders Firming and consolidating planned order doesn't verify expiration date on the formula
4032566 SCMPlanningPlanned Orders Invalid order type in production order in spite of selecting "Production" for the "Planned order type"
4032169 SCMPlanningScheduling Referenced planned orders are not rescheduled when rescheduling multiple planned production orders
4034087 SCMProcurementIntercompany Incorrect value is updated and posted on Invoicing after you cancel packing slip and re-post packing slip
4025989 SCMProductProduct Configuration "Value is not found in the map" error when you configure line if cache is enabled
4034024 SCMProductProduct Configuration Z3 solver customization addition
4022618 SCMProduction and Shop Floor Incorrect multiple validation when you select another formula number than the current active one
4034130 SCMProduction and Shop Floor Quality orders are not generated automatically in some AOS servers
4032625 SCMProduction and Shop FloorProduction Orders Inventory transactions status is updated as Picked instead of Reserved Physical
4025788 SCMProduction and Shop FloorShop Floor ControlTime and Attendance Incorrect profile is transferred to approval form from Electronic time card
4025063 SCMProduction CostingLean Costing You experience poor performance when you run MRP and Backflush processes
4033500 SCMProduction CostingLean Costing AOS crashes when you running backflush costing that has an error
4034125 SCMResource and ActivityEngineering Change Style can't be imported for the BOM version data entity
4032890 SCMSales You cannot create a new purchase order from the sales order for non-stocked product when the original purchase order is canceled
4025486 SCMSalesRebates Rebate accounting date isn't correct if you process it in different timezone from the legal entity
4019571 SCMSalesSales Orders Deadlocking on InventSumDeltaDim causes Sales order release batch to fail
4025996 SCMSalesSales Orders Incorrect price on return order when batch number is selected
4025998 SCMSalesSales Orders Carrier Information on Sales Order isn't transferred
4032997 SCMSalesSales Pricing The TAMPROMOTIONITEM table gets an incorrect PromotionID copied in when you copy a trade allowance agreement
4025286 SCMWarehouse and TransportationTransportation Management The quantity is too high error when adding transport request lines to a load with unit conversion
4025285 SCMWarehouse and TransportationTransportation ManagementFreight Reconciliation Freight reconciliation journal for discarded amounts double posts the same debit/credit amounts as the SO invoice voucher that included the charge
4025476 SCMWarehouse and TransportationWarehouse Management Pick Oldest Batch option results in error when items are "Reserved Physical" at the production input location
4032712 SCMWarehouse and TransportationWarehouse Management Fulfillment violation message is ignored in the Release to warehouse form
4032725 SCMWarehouse and TransportationWarehouse Management The "Pick oldest batch" option incorrectly checks destination location for older batch
4033504 SCMWarehouse and TransportationWarehouse Management It allows backflush batch consumption from locations other than the input location after apply kb 3176176
4025462 SCMWarehouse and TransportationWarehouse ManagementLoad Management Load details inquiry displays incorrect Load reference in a transfer order
4026017 SCMWarehouse and TransportationWarehouse ManagementLoad Management Loads that have already printed a packing slip are available to post again with negative lines
4032626 SCMWarehouse and TransportationWarehouse ManagementLoad Management The "Change Location" option in Load Screen doesn't show Staging location after you apply hotfix 3192548
4033136 SCMWarehouse and TransportationWarehouse ManagementLoad Management The Quantity remainder is incorrectly updated when you update quantity on an existing purchase order line
4034126 SCMWarehouse and TransportationWarehouse ManagementLoad Management Cancel delivery remainder deletes the load lines if you use item setup as TMS only
4026019 SCMWarehouse and TransportationWarehouse ManagementPicking and Putaway Inbound work creation when PO is not confirmed
4034396 SCMWarehouse and TransportationWarehouse ManagementPicking and Putaway The "Work created qty" field shows zero when you use "Mixed LP receiving" in mobile device
4034785 SCMWarehouse and TransportationWarehouse ManagementPicking and Putaway Clusters don't order correctly
4024691 SCMWarehouse and TransportationWarehouse ManagementShipment Management You cannot cancel a packing slip when two loads are under one packing slip
4025226 SCMWarehouse and TransportationWarehouse ManagementWave Management Warehouse work with multiple picks for the same item can result in poor performance in the Wave processing create work
4014133 SCMWarehouse and TransportationWarehouse ManagementWork and Worker Management Location XXX does not error when using the Movement by template functionality on the mobile device
4025489 SCMWarehouse and TransportationWarehouse ManagementWork and Worker Management Transfer receipt putaway doesn't generate a LP automatically
4025789 SCMWarehouse and TransportationWarehouse ManagementWork and Worker Management Raw material picking with serial control capture at packing
4032707 SCMWarehouse and TransportationWarehouse ManagementWork and Worker Management Worker isn't captured on journal for WHS adjustment
4023864 Server Purchase order reference form changes when you select another line from related sales order
4025214 ServerAOS Service Load balancing fails because workload becomes negative
4032481 ServerAOS Service AOS crashes when client sends a bad cursor to the server and it tries unpacking it
4023888 ServerCross Company Crosscompany keyword overrides literals value of DataAreaID in SQL even when DATAAREAIDLITERAL and PARTITIONLITERAL are enabled via SYSGLOBALCONFIGURATION
4025875 ServerSecurity Generating E-certificate fails if user id contains '-'
4024842 SIProject Accounting Invoicing partially relieved purchase orders in the new year changes cost price on the document
4032523 SIProject Accounting XX cannot be reserved because only 0.00 are available in the inventory error when you change the Warehouse on the Purchase order
4033314 SIProject AccountingCommited Costs Sales Tax calculates on the cost price but not on the sales price on a billable project journal transaction
4017766 SIProject AccountingEstimates Voucher imbalance error when you reverse an eliminated investment estimate
4025461 SIProject AccountingEstimates Project estimate excludes negative adjustment lines
4033526 SIProject AccountingEstimates Project estimate displays as 100% complete when it should be 0% after apply KB 4018826 and KB 4020440
4033195 SIProject Contracts and BillingBilling Rules The committed amount in the funding limits of the project contract is incorrect when you finalizes a single line of a multiline in a purchase order
4033624 SIProject Contracts and BillingInvoicing The dimensions from the PO are ignored afterward you post cost when you post a purchase order which post cost transaction has no dimensions and that has to be posted into a WIP project
3056843 SIProject Contracts and BillingPay when Paid "Pay when paid" doesn't work for invoices posted in invoice approval journals or when the invoice will be posted in two journal lines
4015593 SIProject ManagementActivities The cursor always moves to the first line when you create two or more new Estimated costs and revenue lines on the WBS form of a project
4034011 SIProject ManagementActivities The system opens the Activities form with an incorrect Activity number when you view details
4033527 SIProject ManagementSCM Integration It creates duplicate sales line numbers when you create new Project item requirements after posting the packing slip for earlier requirements
4034238 SIProject ManagementSCM Integration Incorrect WIP amount on item transactions with the item inventory model "Moving average"

Microsoft Dynamics AX R3 Cumulative Update 13 release coming in Q3 of 2017

$
0
0

Please stay tuned for the coming release of Microsoft Dynamics AX R3 Cumulative Update 13 coming in Q3 of 2017.

Instant File Recovery from Azure VM backups is now generally available

$
0
0

Todd Sweetser

Hi Cloud Partners!  Wanted to pass along this highly requested capability that has been added to Azure VM Backup.  This info is from the Azure blog: Instant File Recovery from Azure VM backups is now generally available

We are excited to announce that Instant recovery of files and folders from Azure VM backups by Azure Backup is now generally available (GA). This adds to the repertoire of cloud-first features we have been delivering from Azure Backup. We earlier announced that File-folder recovery from Azure Windows VM backups and Linux VM backups were available in preview. We received great feedback from preview and we have enhanced the feature in terms of customer experience, security, and performance.

GABlogPic

Value Proposition Recap

To recap the value proposition, with this file recovery feature, now you can securely

  • Recover files instantly – Now instantly recover files from the cloud backups of Azure VMs without any additional infrastructure. Whether it’s accidental file deletion or simply validating the backup, instant restore drastically reduces the time to recover your data.
  • Open application files without restoring them - Our iSCSI-based approach allows you to open/mount application files directly from cloud recovery points to application instances. You need not restore the entire VM and thus save on time taken for recovery and consumption of bandwidth. For e.g. in case of backup of a Azure Linux VM running MongoDB, you can mount BSON data dumps from the cloud recovery point and quickly validate the backup or retrieve individual items such as tables without having to download the entire data dump.


Related links and additional content


Tip of the Day: Semi-Annual Channel and more!

$
0
0

Today's tip...

These articles cover the Semi-annual Channel in Windows and Office, LTSC (previously called LTSB), servicing, and Windows Insider Preview information.

Reference:

BlogMS Microsoft Team Blogs - June 2017 Roll-up

Mitigating Client External Forwarding Rules with Secure Score

$
0
0

Client created rules, that Auto-Forward email from users mailboxes to an external email address, are becoming an increasingly common and fruitful data exfiltration method being used by bad actors today and something we see quite a lot of in the Office 365 Service.

There are a lot of legitimate reasons for using rules that externally Auto-Forward email, such as mergers an acquisitions etc. However they also represent a risk that needs careful and vigilant management by the admins of your tenant to ensure they are not being misused.

These rules can be created through several interfaces, a desktop client, Outlook Web Access even an admin can use PowerShell to implement via the 'New-InboxRule' cmdlet. Users themselves are often unaware of the rules they have in place (lets face it, who in their desktop client regularly reviews their own rules?) so it is very easy to miss them, either accidentally created rules that Auto-Forward externally or intentionally created rules created by a bad actor after compromising an end users account or breaching a high privileged account such as the tenant admin.

One of the most recent scenarios we have seen, involved a bad actor compromising a tenant admin account, the tenant had Auto-Forward disabled on the default (*) Remote Domain, which offered some protection from client rules externally forwarding email, however the bad actor then created a new Remote Domain, with the namespace of where they wished to exfiltrate data to, enabled the Remote Domain to allow Auto-Forward emails and voila, started to implement client rules that would then Auto-Forward to that namespace.

Mitigation

The Office 365 service, does offer you a myriad of built in ways to control the impact of Auto-Forwarded email to external addresses, like all good security measures, you will likely need a combination of all/some of these to adopt the security posture that your organization feels is appropriate for your needs, defense in depth is key as always:

  1. Remote Domains - If you as an Organization do not want to allow Auto-Forward emails at all, ensure the setting 'Allow automatic forwarding' is disabled on your Remote Domain settings, such as 'Set-RemoteDomain Default -AutoForwardEnabled $false' or via the Admin Center.  Also ensure you are reviewing this as part of your scheduled security reviews, you should be checking the Default Remote Domain and other Remote Domains you may have active have your desired settings in place. A compromised tenant admin account, could see these settings altered.
  2. Review Client Auto Forwarding Rules - Half the challenge in developing any security posture is understanding your Organizations risk and exposure. Using a script called 'DumpDelegatesandForwardingRules.ps1'from here  https://github.com/OfficeDev/O365-InvestigationTooling will allow you to perform an audit of just how many of your clients have rules that Auto-Forward externally. This script can take a while to complete, as it iterates through each mailbox to check the rules (rules are stored in a users mailbox as a hidden item).
  3. RBAC - You can use RBAC to limit the impact as well, by adding a new management role based of the MyBaseOptions and restricting the parameters DeliverToMailboxAndForward, ForwardingAddress, ForwardingSmtpAddress.
  4. Transport Rules -  We have another tool at our disposal here, by using a Transport Rule. Implementing a Transport Rule based around the following can stop emails that are set to be Auto-Forwarded to an external address. In summary you create a rule based on the following logic. IF The Sender is located ‘Inside the organization’ AND IF The Recipient is located ‘Outside the organization’ AND IF The message type is ‘Auto-Forward’ THEN Reject the message with the explanation ‘External Email Forwarding via Client Rules is not permitted’. This will stop delivery of the Auto-Forward message and issue an NDR as the cherry on top. There are numerous great blog articles out there on how to achieve this.

How Can Secure Score Help?

Using Secure Score https://securescore.office.com helps increase your organization’s security by encouraging you to use the built-in security features in Office 365 (many of which you already purchased but might not be aware of). We have implemented a new Security Control in Secure Score called 'Client Rules Forwarding Blocks'. It basically takes mitigation 4 from above and turns that into a one click experience, allowing you to quickly implement a Transport Rule to help mitigate client created rules that Auto-Forward to external addresses. By using this control it will allow you create the Transport Rule above, you can then subsequently tweak the rule directly, for example if you wished to change the NDR text. This feature is now live within Secure Score and we have seen already in the few days it has been live, over 6000 tenants enable it.

You can find this Security Control in the Advanced Action section of your queue.

So, there we go some steps you can take to help mitigate the risk of managing Client External Forwarding Rules within your Organization. Remember, a layered approach is key to helping adopt your Organizations security posture.

SharePoint: Issues with profile pictures when MySite uses SAML auth

$
0
0
There are a couple known issues with user profile pictures when your Mysite web application uses Trusted Provider (ADFS / SAML) authentication.

Symptoms

There are two different known symptoms with the same cause and solution:
#1
When running User Profile Synchronization, nothing is imported or exported. In the Forefront Identity Manager (FIM) client, we see “stopped-extension-dll-exception” for the MOSS_FullImport and MOSS_DeltaImport steps.
In the Application event log on the server running the User Profile Synchronization service (Sync server), the following error is thrown at the same time as when “stopped-extension-dll-exception” is thrown in the FIM client.
Note that the 403 Forbidden is thrown at “ProfileImportExportExtension.DownloadPictures”.  That's where the FIM service tries to download the user profile pictures.
Log Name:  Application
Source:       FIMSynchronizationService
Event ID:   6801
Task Category: Server
Level:       Error
Computer: <TheSyncServer>
Description:
The extensible extension returned an unsupported error.
The stack trace is:
"System.Net.WebException: The remote server returned an error: (403) Forbidden.
at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
at System.Net.WebClient.DownloadData(Uri address)
at Microsoft.Office.Server.UserProfiles.ManagementAgent.ProfileImportExportExtension.DownloadPictures(ProfileChangeData[] profiles)
at Microsoft.Office.Server.UserProfiles.ManagementAgent.ProfileImportExportExtension.Microsoft.MetadirectoryServices.IMAExtensibleFileImport.GenerateImportFile(String fileName, String connectTo, String user, String password, ConfigParameterCollection configParameters, Boolean fFullImport, TypeDescriptionCollection types, String& customData)
#2
Within site collections in your non-mysite web apps, any place that a user profile photo is supposed to be shown (user information list, site permissions, people and groups, person or group columns, etc), there is an ‘x’ shown in place of the picture.  If you browse to the Mysite web application and authenticate and then go back to the previous site, the pictures are shown correctly.

Cause

The Mysite Web Application is configured for Trusted Provider (SAML / ADFS) authentication.
The profile pictures are stored at the root of the mysite host.
For example: http://MySiteRoot.contoso.com/User Photos/Profile Pictures/UserName_MThumb.jpg"
For problem #1 above, the FIM Sync service must retrieve each picture with an HTTP GET, but does not know how to do ADFS authentication, so it fails with 403 Forbidden.
For problem #2, the user is not yet authenticated to the Mysite web app, so retrieving the profile pictures to display within other web apps fails.  As soon as the user authenticates to the Mysite web app, the pictures can be retrieved.

Resolution

The solution to both of these problems is to simply enable the “User Photos” library (and only that library) for anonymous access.
That way, authentication is not required to retrieve the profile pictures.  The FIM Sync service and the worker processes for the non-mysite web apps can now grab the pictures with no issue.

Here’s how you would do it:

In Central Admin | Manage Web Applications, choose the MySite web app and “Authentication Providers”.  Choose the zone that ADFS is enabled in and select the check box for “Enable Anonymous Access”.

Note: Just enabling it here doesn’t give anonymous users access to anything.
Browse to the Mysite host | Site Settings | Site Permissions.
Select “Anonymous Access” in the Ribbon and choose “Lists and Libraries”
Note: Anonymous users still don’t have access to anything, but now you can choose individual lists and libraries to give anonymous access to.
Browse to the view lists page for your mysite host (https://mysite.contoso.com_layouts/15/viewlsts.aspx) and choose Settings for the User Photos library.
Click “Permissions for this picture library”.
Choose “Stop Inheriting Permissions” in the Ribbon.
Choose “Anonymous Access” in the Ribbon, select “View Items” and click ok.
Note: I have not tested this yet with SharePoint 2016 and Microsoft Identity Manager (MIM) 2016, but I'm guessing MIM still lacks the capacity to authenticate via SAML, so the same resolution applies there.

More Query Words for Bing:

My Site mysite
Active Directory Federation Services ADFS
Trusted Provider
Trusted Identity Token Issuer
SAML claims
Forefront Identity Manager FIM
Microsoft Identity Manager MIM
User Profile Synchronization
Profile Sync
stopped-extension-dll-exception

Updating a User Profile Does Not Update That Information in a Site Collection

$
0
0

ISSUE:

After profile properties are updated for a user, the changes are not being updated in some site collections. For example, you changed the display name Jane Doe to Jane Smith. When Jane signs in, she sees the updated name in the top navigation, but when she browses to another site it still shows Jane Doe.

TECHNICAL DELTAILS:

SharePoint stores data related to all users who have signed in to a site collection (or when a user was granted permissions to a site collection) within the site collection to reduce expensive user profile lookups.  The ‘copied’ data can be seen when browsing to the user information list, available per site collection at the URL https://<tenant>.sharepoint.com/<site collection url>/_catalogs/users/simple.aspx.
When a user changes or adds content within a site collection, SharePoint flags that user as active. For users that are set as  “Active” the profile properties that are set to replicable will be synced from UPA to the user information list as part of the WSSSync process (WSSSync process: https://support.microsoft.com/en-us/help/3168272/information-about-user-profile-synchronization-in-sharepoint-online). As a result, all changes, like the display name, or the email address are synchronized to the site collection.
Users that are Inactive are not synchronized, and their profile values will remain the same until they start contributing or making changes to the site collection. This mechanism was implemented to reduce the number of synchronization between the user profiles and the site collections to avoid the expensive operation when possible to prevent performance issues.


RESOLUTION:

There are 2 ways to get a user set from inactive to active. (NOTE: Please be aware that those steps are per site collection.) When the operation was performed, can you undo the changes needed to get the updated values synchronized.
  1. Setup an alert on the site collection for the user
As an administrator, you can browse to any list/library in the site collection and create an alert send to the user.
  1. Share content specific with the user
Upload a new file, or create a new item you can break inheritance on and share with the specific user.
It can take up to 24 hours before the changes are reflected in the site collection

I just generated a new Client Secret.  Why can’t I test it?

$
0
0

I was recently engaged in a long running critical case for a customer that exposed some opportunities for further discussion on SharePoint Add-In Authentication.

Here is the scenario: Your organization leverages a Provider Hosted SharePoint Add-in, whose secret is close to expiring.  Following the documented process for Generating a New Client Secret you create a new client secret.  Hoping to confirm the new secret, you modify the Provider Host Web Application Properties to only use the new secret. When you attempt to use your Add-in, it fails.

Understanding the Add-in Authentication Flow

For the following few paragraphs, it will be helpful to review the documentation on The Context Token OAuth flow for SharePoint Add-Ins.  The important take away is the OAuth flow, which is as follows:

  1. User requests the app by clicking on the link in SharePoint.
  2. SharePoint will request a token from Azure.
  3. Azure will sign the token using the oldest valid client secret associated with the ClientID of the App
  4. Azure will pass that token to SPO, which then passes it to the Client.
  5. The client will present the token to the Provider Hosted Web App, which uses the stored Client Secret(s) to validate the token.
  6. If the Provider Hosted Web App doesn’t have the secret that was used to sign the token, it will fail.

The interesting thing to note here is #3.  Because it uses the oldest eligible token, the Provider Hosted Web Application must know about the expiring secret in order to continue working normally.

In order to verify that the client secret is updated, you can query Azure Active Directory using the following code:

Connect-MSOLService
 $clientId = 'client id of the add-in'
 Get-MsolServicePrincipalCredential -AppPrincipalId $clientid -ReturnKeyValues $true | Where-Object { ($_.Type -ne "Other") -and ($_.Type -ne "Assymetric") }

If you then see 3 entries with an expiration set to a year (or 3, if you decided to create a new secret 3 years in the future) then you have confirmed that the secret is now valid and can update your Provider Host Web Application Properties.

Forcing a cutover

Once you have verified your new secret above, you can safely wait for the current secret to expire and the transition to the new secret should be seamless. If your organization wants to force a cutover, say during a change window, then you can delete the expiring secrets using the following code.

Connect-MSOLService
$clientId = 'client id of the add-in'
$secrets = Get-MsolServicePrincipalCredential -AppPrincipalId $clientid -ReturnKeyValues $true | Where-Object { ($_.Type -ne "Other") -and ($_.Type -ne "Assymetric") }
$secrets

Use the output of the $secrets command to identify the date/time of the expiring secret.  Then use the following code:

$DeleteTheseSecrets = $Secrets | Where-Object { $_.EndDate -like ‘end date of expiring secret’ }
$DeleteTheseSecrets | ForEach-Object {Remove-MSOLServicePrincipalCredential $_.KeyId}

Then remove the old secret from the Provider Host Web Application Properties, and test your App.  Things should smoothly transition to use the new Client Secret.

NOTE: There is no technical reason to engage in a forced cutover. With both client secrets in the Provider Host Web Application Properties, there should be no real need for you to do this.  These steps are provided as a courtesy to customers with strict Change-Control Compliance needs.

Hyper-V virtual machine gallery and networking improvements

$
0
0

In January, we added Quick Create to Hyper-V manager in Windows 10.  Quick Create is a single-page wizard for fast, easy, virtual machine creation.

Starting in the latest fast-track Windows Insider builds (16327+) we’re expanding on that idea in two ways.  Quick Create now includes:

  1. A virtual machine gallery with downloadable, pre-configured, virtual machines.
  2. A default virtual switch to allow virtual machines to share the host’s internet connection using NAT.

image

To launch Quick Create, open Hyper-V Manager and click on the “Quick Create…” button (1).

From there you can either create a virtual machine from one of the pre-built images available from Microsoft (2) or use a local installation source.  Once you’ve selected an image or chosen installation media, you’re done!  The virtual machine comes with a default name and a pre-made network connection using NAT (3) which can be modified in the “more options” menu.

Click “Create Virtual Machine” and you’re ready to go – granted downloading the virtual machine will take awhile.

Details about the Default Switch

The switch named “Default Switch” or “Layered_ICS”, allows virtual machines to share the host’s network connection.  Without getting too deep into networking (saving that for a different post), this switch has a few unique attributes compared to other Hyper-V switches:

  1. Virtual machines connected to it will have access to the host’s network whether you’re connected to WIFI, a dock, or Ethernet.
  2. It’s available as soon as you enable Hyper-V – you won’t lose internet setting it up.
  3. You can’t deleted it.
  4. It has the same name and device ID (GUID c08cb7b8-9b3c-408e-8e30-5e16a3aeb444) on all Windows 10 hosts so virtual machines on recent builds can assume the same switch is present on all Windows 10 Hyper-V host.

I’m really excited by the work we are doing in this area.  These improvements make Hyper-V a better tool for people running virtual machines on a laptop.  They don’t, however, replace existing Hyper-V tools.  If you need to define specific virtual machine settings, New-VM or the new virtual machine wizard are the right tools.  For people with custom networks or complicated virtual network needs, continue using Virtual Switch Manager.

Also keep in mind that all of this is a work in progress.  There are rough edges for the default switch right now and there aren't many images in the gallery.  Please give us feedback!  Your feedback helps us.  Let us know what images you would like to see and share issues by commenting on this blog or submitting feedback through Feedback Hub.

Cheers,
Sarah


Microsoft Inspire で人気を集めたセッション トップ 10 をご紹介【7/26 更新】

$
0
0

(この記事は 2017 年 7 月21 日にMicrosoft Partner Network blog に掲載された記事 Top 10 Sessions from Microsoft Inspire翻訳です。最新情報についてはリンク元のページをご参照ください。)

 

ワシントン D.C. で開催された Microsoft Inspireは、パートナーの皆様のおかげで大成功のうちに幕を閉じました。この活気あふれる有意義なパートナー エコシステムは、パートナー様の存在とパートナー様の革新的なアイデアに支えられています。ご参加いただけなかったパートナー様は、今回のイベントの模様をまとめた以下の動画をぜひご覧ください。

業界のたくさんのソート リーダーやエキスパートにご参加いただいたため、参加したかったすべてのセッションに出られなかったという方もいらっしゃるのではないかと思います。そこでこの記事では、今年の Microsoft Inspire で人気の高かったセッション トップ 10 をご紹介したいと思います。

1. Creating Stories that Bring Home the Bacon (成功を引き寄せるストーリーを作るには)

ストーリーテリングのエキスパートである ResourceiT Consulting Ltd. の Julie Simpson 氏が、インパクトがあって印象に残るようなストーリーをお客様にプレゼンするためのヒントについて説明しました。パートナー ビジネス モデルを採用するすべてのビジネス リーダーを対象としたインタラクティブなセッションであり、ストーリーテリングを駆使してビジネスを成長させ、市場シェアを拡大するために必要な新しい考え方を紹介しました。このセッションの模様はこちら (英語) からご覧いただけます。

 

2. Building a Successful Cybersecurity Practice with Microsoft (マイクロソフトと共に効果的なサイバーセキュリティの手法を確立する)

このセッションでは、マイクロソフトのワールドワイド サイバーセキュリティ担当バイス プレジデントの Ann Johnson が、マイクロソフトの取り組みには必ずセキュリティが組み込まれていることについて説明しました。このことは、お客様がデジタル改革を進めながら自身の安全を確保するために重要な点です。セッションにご参加の皆様は新しいサイバー セキュリティのアプローチについて学んだほか、自社にしか実現できないソリューションをマイクロソフトと協力して構築する方法について学びました。このセッションの模様はこちら (英語) からご覧いただけます。

 

3. Grow Your Business with Modern IT (最先端の IT を活用してビジネスを成長させる)

マイクロソフトのエキスパートである Windows 法人向けマーケティング担当ゼネラル マネージャー Bernardo Caldas と、Windows 部門のプログラム管理/エンタープライズ/セキュリティ担当ディレクター Rob Lefferts が、すべてのパートナー様が最先端の IT を活用してビジネスを短期間で成長させられることについて説明しました。企業が自社の製品、ツール、業務を変革するためには、今日のデジタル経済に合わせて構築された世界トップクラスのプラットフォームを活用する必要があります。このセッションでは、Windows 10、Office 365、Microsoft Enterprise Mobility + Security を利用して、高い生産性と安全な IT エクスペリエンスを実現する方法について紹介しました。その模様はこちら (英語) からご覧いただけます。

 

4. Unlocking Digital Transformation Through SAM (SAM によるデジタル改革の実現)

マイクロソフトの米国/ワールドワイド SAM&C 担当ゼネラル マネージャーの Patama Chantaruck が、デジタル改革と SAM によってパートナー様にもたらされる大規模なビジネス チャンスについて独自の見解を紹介しました。SAM がデジタル改革を推進するしくみと、パートナーの皆様がそれらのビジネス チャンスをどのように活かせるかについてお伝えしました。このセッションの模様はこちら (英語) からご覧いただけます。

 

5. Microsoft’s FY18 Commercial Sales Strategy: An Update for Partners (マイクロソフトの 2018 年度法人向け営業戦略: パートナー様向け最新情報)

マイクロソフトの法人顧客セグメント担当コーポレート バイス プレジデントの Chris Weber が、2018 年度の法人向け営業戦略について紹介しました。このセッションでは、「今年は何が変わるのか?」、「重要なリソースを投資すべきなのはどの分野か?」といったパートナー様が最も関心を寄せる質問にお答えし、大規模なお客様から小規模なお客様まで、あらゆる規模の企業が活用できる戦略について独自の見解を紹介しました。このセッションの模様はこちら (英語) からご覧ください。

 

6. The Microsoft Security Strategy (マイクロソフトのセキュリティ戦略)

このセッションでは複数の業界リーダーが登壇し、デジタル セキュリティという重要なトピックについて詳細に掘り下げ、マイクロソフトがセキュリティの研究開発に年間 10 億ドルも投じた背景となる戦略について説明しました。そのようなセキュリティを活用してどのようにお客様のニーズを満たせるのか、また、パートナー様はマイクロソフトの製品を活用してビジネス構築の基盤となる統合ソリューションをどのように形成できるのかについて紹介しました。このセッションのスピーカーは以下のとおりです。

  • BUI、ビジネス開発マネージャー、Lizette van Wyk 氏
  • マイクロソフト、Office パートナー担当ゼネラル マネージャー、Giovanni Mezgec
  • マイクロソフト、Azure + セキュリティ マーケティング担当コーポレート バイス プレジデント、Julia White
  • マイクロソフト、One Commercial Partner、クラウド収益性および戦略リード、Melissa Mulholland
  • Crayon、バイス プレジデント、Nabil Chebbi 氏
  • マイクロソフト、セキュリティ マーケティング担当ディレクター、Ryan McGee

このセッションの模様はこちら (英語) からご覧いただけます。

 

7. Microsoft 365 Enterprise: A Single, Trusted Solution to Grow Your Managed Services Practice (Microsoft 365 Enterprise: マネージド サービス事業の成長を支援する 1 つの信頼できるソリューション)

マイクロソフトの Office パートナー担当ゼネラル マネージャーの Giovanni Mezgec、Microsoft Office 担当ディレクターの Jack Elmore、マイクロソフトのディレクターの Jeremy Chapman の 3 人が、新しい Microsoft 365 Enterprise によって、企業がスタッフの生産性を向上させ、セキュリティとコンプライアンスの要件をシームレスに満たすソリューションを実現する方法について説明しました。参加したパートナーの皆様には、お客様に新しい付加価値サービスを提供するメリットとビジネス チャンスについてお伝えしました。このセッションの模様はこちら (英語) からご覧いただけます。

 

8. Empowering Organizations with Microsoft Azure (Microsoft Azure が企業にもたらす力)

このセッションでは、企業が Microsoft Azure を活用してより多くのことを達成できるようにする方法と、パートナー様がそれによるビジネス チャンスを活かすための方法について、複数の業界エキスパートが解説しました。このセッションのスピーカーは以下のとおりです。

  • 10th Magnitude、市場開発担当バイス プレジデント、Jason Rook 氏
  • Rackspace Hosting、マイクロソフト テクノロジ担当 CTO、Jeff DeVerter 氏
  • マイクロソフト、Azure + セキュリティ マーケティング担当コーポレート バイス プレジデント、Julia White
  • Chef Software、ビジネス開発担当ディレクター、Michele Todd 氏

このセッションの模様はこちら (英語) からご覧いただけます。

 

9. Empowering Digital Transformation with Hosting and Managed Service Providers (ホスティングおよびマネージド サービス プロバイダーによるデジタル改革の支援)

マイクロソフトのワールドワイド ホスティング & マネージド サービス プロバイダー担当バイス プレジデントの Aziz Benmalek が、Rackspace Hosting のマイクロソフト テクノロジ担当 CTO の Jeff DeVerter 氏と 451 Research のデータセンター イニシアチブおよびデータ戦略担当シニア バイス プレジデントの Michelle Bailey 氏の 2 人の業界ソート リーダーと共に、マイクロソフトがパートナー様と協力してどのようにデジタル改革を支援しているかについて説明しました。マイクロソフトとサービス プロバイダーが共同で価値提案することに関するビジョンと戦略について独自の見解をお伝えしました。このセッションの模様はこちら (英語) からご覧いただけます。

 

10. Taking Risks and Failing Fast: Business Leadership Lessons in the Age of Mobile (リスクを恐れず早めに失敗すること: モバイル時代におけるビジネス リーダーシップの教訓)

このセッションでは、マイクロソフトの法人顧客セグメント担当コーポレート バイス プレジデントの Chris Weber が、低迷するビジネスの経営からパートナー様が学べることについて紹介しました。スピーカー自身のリーダーシップ モデルをベースに、要求の厳しい携帯電話事業から学んだ教訓と、その経験によってリーダーシップに対する見解がどのように変わったのかを説明しました。このセッションの模様はこちら (英語) からご覧いただけます。

 

面白かったセッションや見逃したセッションを観たい方は、Microsoft Inspire のセッション カタログ (英語) で検索できるので、ぜひご利用ください。

今年の Microsoft Inspire はいかがでしたか? 皆様にご満足いただけたようであればとても嬉しいです。来年の Microsoft Inspire はラスベガスで開催されます。参加費は 1,995 ドルとなります。ぜひこちらからお申し込みください (英語)

先週はワシントン D.C. まで足をお運びいただき誠にありがとうございました! このイベントに関するご感想は、マイクロソフト パートナー コミュニティのこちらのディスカッション ボード (英語) までお寄せください。マイクロソフトや他のパートナーの皆様とお考えをシェアしていただければ幸いです。

 

 

 

Forza Garage Week 2。『Forza Motorsport 7』収録車種新たに 60 台を公開

$
0
0

『Forza Motorsport 7』に収録される 700 車種以上のクルマのうち、今週は 1950 Alfa Romeo 158、1967 Volkswagen Karmann Ghia、1953 Chevrolet Corvettel などのビンテージカー 60 台を公開。10 月 3 日の発売に向け、収録車種リストを ForzaMotorsport.net で毎週更新。

Forza 1953 Chevrolet Corvette

Forza Motorsport 7 収録車種公開ページ – Week 2 (ForzaMotorsport.net / 英語のみ)

Forza Motorsport 7 製品ページ

関連情報:

.none{display:none;}
body {
font-size: 16px;
line-height: 1.5em;
margin-bottom: 2em;
}
h3 {
font-size: 1.5em;
font-weight: bold;
padding: .25em 0 .5em .75em;
border-left: 6px solid #107C10;
border-bottom: 1px solid #ccc;
}
.image {
margin-bottom: 1.5em;
}

OMS 記錄搜尋中的縮小

$
0
0

概要:學習縮小是如何統整搜尋結果並讓其變得更好理解。

縮小將紀錄搜尋結果分組來減少雜訊並產生一個統整的視圖。您只需在記錄搜尋的結果上方點選"縮小",便會縮小搜尋結果。如下圖:

 

下圖是過去24小時縮小後的事件記錄:

 

從範例中可以看到縮小出了1272個不同的事件群組。這是一個很好統整結果的方法。

您可以利用選取敏感度的橫桿調整群組中事件的相似程度。敏感度越低,就越多事件會被分類在同一個群組中。然而若是將敏感度調得太低,將可能會把沒什麼關聯性的世間分在同一個群組,導致分組變得無效。

 

縮小也會偵測您的事件和群組事件中相似的變數,您可以點擊藍色的 "*" 來查看。點擊後您還可以任意點擊一個事件來深入查看其詳細資料。而若要查看所有完整的資料,可以點選上方的 [顯示較多]

Integrating Custom Identity provider with Asp.net and Provider hosted apps to achieve single sign on with Forms Based Authentication

$
0
0

This post is a contribution from Sohail Sayed, an engineer with the SharePoint Developer Support team

We demonstrated creating a custom identity provider and integrating it with SharePoint to achieve single sign on in the blog post https://blogs.technet.microsoft.com/sharepointdevelopersupport/2017/07/07/creating-a-custom-identity-provider-and-integrating-with-sharepoint-to-achieve-single-sign-on-with-fba-across-multiple-web-applications/. In this blog we will demonstrate integrating the custom identity provider with Asp.Net web sites and Provider hosted apps.

Create a new asp.net web site.
We will start by creating a new asp.net web site. In my case I chose the Empty Web Site Template. This will create an empty web site project that will only contain the web.config file. Add a new web form to the site. If you have an existing asp.net site update the Web.Config with the configuration mentioned in the subsequent sections.

 

Web.Config configuration
The below sections describe the various web.config changes required. Note I am using the configuration for Microsoft.IdentityModel namespace. The same configuration can be done using System.IdentityModel namespace. More information on this can be found at https://docs.microsoft.com/en-us/dotnet/framework/security/namespace-mapping-between-wif-3-5-and-wif-4-5

 

Define the configSections
We need to first add the configSections that defines the rest of the configuration first. Add the below tags. If your web.config already has a <configSections> element just add the <section> tag.

  <configSections>
    <section name="microsoft.identityModel" type="Microsoft.IdentityModel.Configuration.MicrosoftIdentityModelSection, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </configSections>

 

Modify the system.web section
Modify the <system.web> section as below. Note the requestValidationType defined in the httpRuntimeElement. This defines a class that will perform validation of the sign in request. This class is invoked by the IsSignInResponse method of the Microsoft.IdentityModel.Web.WSFederationAuthenticationModule. We will define this class in a later section in this blog

  <system.web>
    <compilation targetFramework="4.5" debug="true">
      <assemblies>
        <add assembly="Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      </assemblies>
    </compilation>
    <authentication mode="None"/>
    <authorization>
      <deny users="?"/>
    </authorization>
    <pages controlRenderingCompatibilityVersion="4.0"/>
    <httpRuntime requestValidationType="SampleRequestValidator"/>
  </system.web>

 

Define system.webServer section
Add the <system.webServer> section which adds the WSFederationAuthenticationModule. This module is responsible for securing the asp.net site and handling the redirection to the custom identity provider

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules>
      <add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler"/>
      <add name="SessionAuthenticationModule" type="Microsoft.IdentityModel.Web.SessionAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler"/>
    </modules>
  </system.webServer>

 

Define the microsoft.identityModel section
Finally add the <microsoft.identityModel> section. This section defines the following

    1. Audience Uris indicating the valid audience for the identity provider
    2. Issuer and realm information
    3. Certificate details used for trust and communication
  <microsoft.identityModel>
    <service>
      <audienceUris>
        <add value="https://custom.contoso.com/WebSite1/"/>
      </audienceUris>
      <federatedAuthentication>
        <wsFederation passiveRedirectEnabled="true" issuer="https://custom.contoso.com/customidp/" realm="https://custom.contoso.com/WebSite1/" requireHttps="true"/>
        <cookieHandler requireSsl="false"/>
      </federatedAuthentication>
      <serviceCertificate>
        <certificateReference x509FindType="FindByThumbprint" findValue="88c1d6ea0c3d9ee05459403cc8121e6ace5a7edd" storeLocation="LocalMachine" storeName="My"/>
      </serviceCertificate>
      <applicationService>
        <claimTypeRequired>
          <claimType type="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" optional="true"/>
          <claimType type="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" optional="true"/>
          <claimType type="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" optional="true"/>
        </claimTypeRequired>
      </applicationService>
      <issuerNameRegistry type="Microsoft.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
        <trustedIssuers>
          <add thumbprint="88c1d6ea0c3d9ee05459403cc8121e6ace5a7edd" name="https://custom.contoso.com/customidp/"/>
        </trustedIssuers>
      </issuerNameRegistry>
    </service>
  </microsoft.identityModel>

 

We need to make the following changes to the above section

  • Modify the value in the <audienceUris> and the value of the realm attribute in <wsFederation> tag to the url of the current web site.
  • Change the issuer attribute in the <wsFederation> and the name attribute in the <trustedIssuers>/<add> tag to the url of the trusted identity provider
  • Update the findValue attribute the <certificateReference> tag and the thumbprint attribute <trustedIssuers>/<add> tag with the thumbprint of the certificate used by the trusted identity provider.

Note when copying the thumbprint from the certificate a special character gets added to the start of the thumbprint. This character is not visible in notepad. To remove this copy the thumbprint to the notepad. Press home key on the keyboard so that the cursor is at the beginning of the thumbprint value. Press delete key twice till the first character of the thumbprint is deleted. Manually type back the character.

 

Define the SampleRequestValidator class
In the “Modify system.web section” section we had specified the requestValidationType as SampleRequestValidator. We need to define this class now. Add a new class to the project and name it as SampleRequestValidator. Overwrite the code of this class with the below code

using System;
using System.Web;
using System.Web.Util;

using Microsoft.IdentityModel.Protocols.WSFederation;

/// <summary>
/// This SampleRequestValidator validates the wresult parameter of the
/// WS-Federation passive protocol by checking for a SignInResponse message
/// in the form post. The SignInResponse message contents are verified later by
/// the WSFederationPassiveAuthenticationModule or the WIF signin controls.
/// </summary>

public class SampleRequestValidator : RequestValidator
{
    protected override bool IsValidRequestString(HttpContext context, string value, RequestValidationSource requestValidationSource, string collectionKey, out int validationFailureIndex)
    {
        validationFailureIndex = 0;

        if (requestValidationSource == RequestValidationSource.Form && collectionKey.Equals(WSFederationConstants.Parameters.Result, StringComparison.Ordinal))
        {
            SignInResponseMessage message = WSFederationMessage.CreateFromFormPost(context.Request) as SignInResponseMessage;

            if (message != null)
            {
                return true;
            }
        }

        return base.IsValidRequestString(context, value, requestValidationSource, collectionKey, out validationFailureIndex);
    }

}

 

You can find more information on this class at https://social.technet.microsoft.com/wiki/contents/articles/1725.wif-troubleshooting-a-potentially-dangerous-request-form-value-was-detected-from-the-client.aspx

 

Read the user value

Finally we need to be able to read the user value and the claims.

Update the code in the default.aspx Page Load method as below

    protected void Page_Load(object sender, EventArgs e)
    {
        if (HttpContext.Current.User.Identity.IsAuthenticated)
        {
            Microsoft.IdentityModel.Claims.ClaimsPrincipal cp = HttpContext.Current.User as Microsoft.IdentityModel.Claims.ClaimsPrincipal;

            if (cp != null)
            {
                foreach (Microsoft.IdentityModel.Claims.Claim claim in cp.Identities[0].Claims)
                {
                    Response.Write(claim.ClaimType + " - " + claim.Value +"<br>");
                }
            }
        }
    }

 

Browse the page. It should redirect you to the custom identity provider login page if you are not already logged in. After successfully login you should be able to see the claims on the page.

Additional Configuration for Provider hosted add-ins.
Provider hosted apps are asp.net web sites and will use the same configuration as defined above. We need to make some additional changes to be able to make calls into SharePoint.

Firstly you need to configure the Provider hosted add-in to use SAML as mentioned in this blog from Steve Peschka

https://samlman.wordpress.com/2015/03/01/using-sharepoint-apps-with-saml-and-fba-sites-in-sharepoint-2013/

The helper classes mentioned in the above blog are available at the below link

https://samlman.wordpress.com/2015/02/28/an-updated-claimstokenhelper-for-sharepoint-2013-high-trust-apps-and-saml/

By default in this code the RetrieveIdentityForSamlClaimsUser method of the TokenHelper class casts the HttpContext.Current.User object as System.IdentityModel.Claims.ClaimsPrincipal. Since in the web.config we are using the configuration for Microsoft.IdentityModel the above operation will return null. To fix this go to the TokenHelper. RetrieveIdentityForSamlClaimsUser.

Find the line Microsoft.IdentityModel.Claims.ClaimsPrincipal cp = UserPrincipal as System.IdentityModel.Claims.ClaimsPrincipal;

Change this to

Microsoft.IdentityModel.Claims.ClaimsPrincipal cp = UserPrincipal as Microsoft.IdentityModel.Claims.ClaimsPrincipal;

This should now retrieve a valid claims identity.

In addition in the default.aspx use SMTP to retrieve the ClientContext since we are using email address as the identity claim

            var spContext = SharePointContextProvider.Current.GetSharePointContext(Context);

            // using (var clientContext = spContext.CreateUserClientContextForSPHost())
            using (var clientContext = spContext.CreateUserClientContextForSPHost(TokenHelper.IdentityClaimType.SMTP))
            {
                clientContext.Load(clientContext.Web, web => web.Title);
                clientContext.ExecuteQuery();
                Response.Write(clientContext.Web.Title);
            }

 

If you now deploy the provider hosted add-in you may still get a 401 error. To fix this we need to update the user profile of that user. This is because the user rehydration process in SharePoint will map the identity claim to one of the fields in the user profile. In our case since we are using SMTP in the Provider hosted app when getting the client context we need to ensure the WorkEmail field in the user profile for the current user in SharePoint Central Administration matches the value of the identity claim. The Provider hosted add-in will start working after this change. For more information on user profile configuration with Provider hosted add-ins refer to the below blog

https://samlman.wordpress.com/2015/03/01/oauth-and-the-rehydrated-user-in-sharepoint-2013-howd-they-do-that-and-what-do-i-need-to-know/

100.000$ Preisgeld und ein Coaching mit Satya Nadella – Das Finale des Imagine Cup 2017!

$
0
0

Beim Imagine Cup treten seit 15 Jahren Nachwuchs-Entwickler aus der ganzen Welt an, um die Microsoft-Jury von ihren Ideen, Produkten und Lösungen zu überzeugen. Die besten der 350.000 Bewerber stehen jetzt in der Final-Runde in Redmond, darunter auch zwei Teams aus Deutschland.

Wir arbeiten jeden Tag daran, Menschen und Unternehmen dabei zu unterstützen, mehr zu erreichen, möchten durch neue Technologien den Alltag vereinfachen oder neue Erfahrungen ermöglichen. Und weil wir daran glauben, dass Technologie in vielen Bereichen, wie zum Beispiel Nachhaltigkeit, dem Schutz von Menschenrechten, Gleichberechtigung und vielen mehr, die Welt zu einem besseren Ort machen kann, sind Initiativen wie der Imagine Cup auch so wichtig.

Seit 15 Jahren kommen jedes Jahr begabte und engagierte Studenten aus der ganzen Welt zusammen und präsentieren ihre kreativen Ideen und Projekte. Allein in diesem Jahr haben mehr als 350.000 Teilnehmer aus mehr als 180 Ländern an dem internationalen Wettbewerb teilgenommen. 54 Teams konnten sich durchsetzen und zeigen diese Woche in Redmond, was in ihnen - und ihren Projekten – steckt. Auf den Sieger wartet nicht nur ein Preisgeld in der Höhe von 100.000 USD, sondern auch ein Coaching durch Microsoft CEO Satya Nadella sowie ein 125.000 USD Azure Grant und die Teilnahme an der Build Developer Conference im kommenden Jahr.

Zwei Teams aus Deutschland haben sich im nationalen Finale für die Teilnahme qualifiziert und sich auf den Weg nach Seattle gemacht.

Team SmartCase möchte dafür sorgen, dass verlorene Gepäckstücke in Zukunft der Vergangenheit angehören. Das Team vom Karlsruher Institut für Technologie (KIT) hilft mit seiner Lösung, Reisegepäck aufzufinden und gegen Diebstahl zu sichern. Nutzer können ihr Gepäck über GPS orten und über eine App auf dem Smartphone weltweit nachverfolgen.

Team koicode von der Technischen Universität München visualisiert Code. Die verbesserte Lesbarkeit soll Anfängern einen einfacheren Einstieg ins Programmieren ermöglichen. Die Visualisierung zeigt vor allem Schülern und Studenten den Aufbau und die Zusammenhänge von Codes nachvollziehbar auf.

Beide Teams haben innerhalb der ersten Runde im Tech Showcase super Pitches gegenüber den Juroren hingelegt. Team SmartCase konnte sich im ersten Schritt erfolgreich gegen die Konkurrenz behaupten und ist in das Viertelfinale eingezogen, hat dann aber den Einzug ins Halbfinale knapp verpasst. Team koicode konnte im Tech Showcase zwar schon in weiten Teilen begeistern, die Juroren waren aber leider (noch) nicht restlos überzeugt.

Beide Teams haben nun noch die Gelegenheit, im Rahmen der Wildcard-Runde die Chance auf den Einzug in das Halbfinale zu wahren und feilen in der Zwischenzeit an ihrem Elevator-Pitch.

Mehr Informationen gibt es auf der offiziellen Imagine Cup Webseite, via Twitter und natürlich im Live-Stream zum Imagine Cup Finale 2017 am Donnerstag, 27. Juli ab 18:00 Uhr.


Ein Beitrag von Pina Kehren
Communications Manager Mobile Devices, Digital Education & Innovation

Viewing all 36188 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>